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/label-external-contributions.yml b/.github/workflows/label-external-contributions.yml new file mode 100644 index 000000000000..2843f6d2c5d4 --- /dev/null +++ b/.github/workflows/label-external-contributions.yml @@ -0,0 +1,80 @@ +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: Label external contributions + env: + GH_TOKEN: ${{ github.token }} + 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 + .author_association != "MEMBER" and + .author_association != "OWNER" and + (any(.labels[]?; .name == $label) | not)' \ + >/dev/null <<<"$pr_json"; then + continue + fi + + 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 + + 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/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0f2906dab310..37bd56bb11ee 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([^/]*)/.*$(? 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/lib/change-notes/2026-08-27-bdlbb-blob-models.md b/cpp/ql/lib/change-notes/2026-08-27-bdlbb-blob-models.md new file mode 100644 index 000000000000..ed52e5e091e2 --- /dev/null +++ b/cpp/ql/lib/change-notes/2026-08-27-bdlbb-blob-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added flow summaries for the BDE `BloombergLP::bdlbb::Blob` segmented byte buffer. diff --git a/cpp/ql/lib/change-notes/2026-08-27-protobuf-models.md b/cpp/ql/lib/change-notes/2026-08-27-protobuf-models.md new file mode 100644 index 000000000000..952a1e2a0e33 --- /dev/null +++ b/cpp/ql/lib/change-notes/2026-08-27-protobuf-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added flow summaries for the Protocol Buffers `google::protobuf::MessageLite` C++ API. diff --git a/cpp/ql/lib/change-notes/2026-09-08-boost-asio-ip-resolve.md b/cpp/ql/lib/change-notes/2026-09-08-boost-asio-ip-resolve.md new file mode 100644 index 000000000000..9276eed8ed83 --- /dev/null +++ b/cpp/ql/lib/change-notes/2026-09-08-boost-asio-ip-resolve.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added taint flow models for the `boost::asio::ip::basic_resolver::resolve` function. \ No newline at end of file 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/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/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/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..5114bf861a36 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.1.1-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index 4f84b30d557e..2b48b36c5022 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,148 @@ 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 `constructor`. The + * actual constructor being forwarded to depends on the types of arguments from `start` + * at calls to `forwarder`. + */ +private predicate interpretForwardsModel( + Function forwarder, Constructor constructor, int start, string output, string provenance, + string model +) { + interpretForwardsModelType(forwarder, constructor.getDeclaringType(), start, output, provenance, + model) +} + +/** Holds if `forwarder` forwards its arguments starting at `start` to `constructor`. */ +predicate forwards(Function forwarder, Constructor constructor, int start) { + interpretForwardsModel(forwarder, constructor, 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 +} + +/** + * 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(Constructor constructor, int start, string constructorOutput | + interpretForwardsModel(forwarder, constructor, start, constructorOutput, provenance, model) + | + // Generate the (1) summary + exists(int index, Parameter arg, Parameter p, int indirection | + arg = forwarder.getParameter(start + index) 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 +1253,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/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..b493ba001559 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 @@ -144,7 +144,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 +156,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 +184,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) { + isForwarderConstructorArgumentNodeImpl(call) + } or TRawIndirectOperand0(Node0Impl node, int indirectionIndex) { SsaImpl::hasRawIndirectOperand(node.asOperand(), indirectionIndex) } or @@ -209,10 +212,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..7faa8bb8681c 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,105 @@ private class SideEffectArgumentNode extends ArgumentNode, SideEffectOperandNode } } +/** + * Gets `unspecifiedType`, but with the outermost `ReferenceType` removed, if any. + */ +private Type stripReferences(Type unspecifiedType) { + result = unspecifiedType.(Cpp::ReferenceType).getBaseType().getUnspecifiedType() + or + not unspecifiedType instanceof Cpp::ReferenceType and + result = unspecifiedType +} + +predicate forwardingCallTargetsConstructor( + CallInstruction call, Cpp::Constructor constructor, int start +) { + exists(int numberOfForwardedArguments | + numberOfForwardedArguments <= constructor.getNumberOfParameters() + or + constructor.isVarargs() + | + External::forwards(call.getStaticCallTarget(), constructor, start) and + call.getNumberOfPositionalArguments() = start + numberOfForwardedArguments and + forall(int i | i = [0 .. constructor.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 + stripReferences(call.getPositionalArgument(start + i).getResultType()) = + stripReferences(constructor.getParameter(i).getUnspecifiedType()) + 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 constructor.getParameter(i).hasInitializer() + ) + ) +} + +/** Holds if `call` is a call that forwards arguments to a constructor call. */ +predicate isForwarderConstructorArgumentNodeImpl(CallInstruction call) { + forwardingCallTargetsConstructor(call, _, _) +} + +/** + * 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() { forwardingCallTargetsConstructor(call, result, _) } + + 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 +771,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 +826,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 +852,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 +871,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 +886,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 +1374,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 +1422,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 +1609,8 @@ predicate nodeIsHidden(Node n) { n instanceof SsaSynthNode or n.(FlowSummaryNode).getSummaryNode().isHidden() + or + n instanceof ForwarderConstructorArgumentNode } predicate neverSkipInPathGraph(Node n) { @@ -1543,6 +1692,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/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..7e9f7760b5a8 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 @@ -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/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/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/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/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/change-notes/2026-08-13-ambiguous-assignment-of-comparison.md b/cpp/ql/src/change-notes/2026-08-13-ambiguous-assignment-of-comparison.md new file mode 100644 index 000000000000..bcec04cbf241 --- /dev/null +++ b/cpp/ql/src/change-notes/2026-08-13-ambiguous-assignment-of-comparison.md @@ -0,0 +1,6 @@ +--- +category: newQuery +--- +* 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/qlpack.yml b/cpp/ql/src/qlpack.yml index ca971b04aaad..034523449c24 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.8.4-dev groups: - cpp - queries 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/bdlbb.cpp b/cpp/ql/test/library-tests/dataflow/external-models/bdlbb.cpp new file mode 100644 index 000000000000..c8ec9dfd031e --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/external-models/bdlbb.cpp @@ -0,0 +1,98 @@ + +// --- stub library headers --- + +namespace bsl { + typedef unsigned long size_t; + template class allocator {}; + template struct char_traits {}; + template, class Allocator = allocator > + class basic_string { + public: + basic_string(const charT* s, const Allocator& a = Allocator()); + const charT* data() const; + size_t size() const; + }; + typedef basic_string string; + template class shared_ptr { + public: + T *get() const; + }; +} + +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/flow.expected b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected index 74f24322340f..21aeeb32e3a1 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,170 @@ 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::bdlbb; Blob; true; buffer; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 100 | Summary: BloombergLP::bdlbb; BlobBuffer; true; buffer; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 101 | Summary: BloombergLP::bdlbb; BlobBuffer; true; data; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 102 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (Blob *,int,const Blob &,int,int); ; Argument[*2]; Argument[*0]; taint; manual | +| 103 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (Blob *,int,const char *,int); ; Argument[*2]; Argument[*0]; taint; manual | +| 104 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (char *,const Blob &,int,int); ; Argument[*1]; Argument[*0]; taint; manual | +| 105 | Summary: BloombergLP::bdlbb; BlobUtil; true; getContiguousRangeOrCopy; ; ; Argument[*1]; ReturnValue[*]; taint; manual | +| 106 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 107 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 108 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags); ; Argument[*1..2]; ReturnValue; taint; manual | +| 109 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 110 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view); ; Argument[1..2]; ReturnValue; taint; manual | +| 111 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | +| 112 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags); ; Argument[1..2]; ReturnValue; taint; manual | +| 113 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | +| 114 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 115 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 116 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags); ; Argument[*0..1]; ReturnValue; taint; manual | +| 117 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 118 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view); ; Argument[0..1]; ReturnValue; taint; manual | +| 119 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | +| 120 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags); ; Argument[0..1]; ReturnValue; taint; manual | +| 121 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | +| 122 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | +| 123 | Summary: google::protobuf; MessageLite; true; AppendPartialToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 124 | Summary: google::protobuf; MessageLite; true; AppendPartialToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 125 | Summary: google::protobuf; MessageLite; true; AppendToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 126 | Summary: google::protobuf; MessageLite; true; AppendToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 127 | Summary: google::protobuf; MessageLite; true; MergeFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 128 | Summary: google::protobuf; MessageLite; true; MergeFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 129 | Summary: google::protobuf; MessageLite; true; MergeFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 130 | Summary: google::protobuf; MessageLite; true; MergeFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 131 | Summary: google::protobuf; MessageLite; true; MergeFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 132 | Summary: google::protobuf; MessageLite; true; MergePartialFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 133 | Summary: google::protobuf; MessageLite; true; MergePartialFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 134 | Summary: google::protobuf; MessageLite; true; MergePartialFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 135 | Summary: google::protobuf; MessageLite; true; MergePartialFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 136 | Summary: google::protobuf; MessageLite; true; MergePartialFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 137 | Summary: google::protobuf; MessageLite; true; ParseFromArray; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 138 | Summary: google::protobuf; MessageLite; true; ParseFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 139 | Summary: google::protobuf; MessageLite; true; ParseFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 140 | Summary: google::protobuf; MessageLite; true; ParseFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 141 | Summary: google::protobuf; MessageLite; true; ParseFromIstream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 142 | Summary: google::protobuf; MessageLite; true; ParseFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 143 | Summary: google::protobuf; MessageLite; true; ParseFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 144 | Summary: google::protobuf; MessageLite; true; ParseFromZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 145 | Summary: google::protobuf; MessageLite; true; ParsePartialFromArray; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 146 | Summary: google::protobuf; MessageLite; true; ParsePartialFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 147 | Summary: google::protobuf; MessageLite; true; ParsePartialFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 148 | Summary: google::protobuf; MessageLite; true; ParsePartialFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 149 | Summary: google::protobuf; MessageLite; true; ParsePartialFromIstream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 150 | Summary: google::protobuf; MessageLite; true; ParsePartialFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 151 | Summary: google::protobuf; MessageLite; true; ParsePartialFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 152 | Summary: google::protobuf; MessageLite; true; ParsePartialFromZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 153 | Summary: google::protobuf; MessageLite; true; SerializeAsCord; ; ; Argument[-1]; ReturnValue; taint; manual | +| 154 | Summary: google::protobuf; MessageLite; true; SerializeAsString; ; ; Argument[-1]; ReturnValue; taint; manual | +| 155 | Summary: google::protobuf; MessageLite; true; SerializePartialAsCord; ; ; Argument[-1]; ReturnValue; taint; manual | +| 156 | Summary: google::protobuf; MessageLite; true; SerializePartialAsString; ; ; Argument[-1]; ReturnValue; taint; manual | +| 157 | Summary: google::protobuf; MessageLite; true; SerializePartialToArray; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 158 | Summary: google::protobuf; MessageLite; true; SerializePartialToCodedStream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 159 | Summary: google::protobuf; MessageLite; true; SerializePartialToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 160 | Summary: google::protobuf; MessageLite; true; SerializePartialToOstream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 161 | Summary: google::protobuf; MessageLite; true; SerializePartialToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 162 | Summary: google::protobuf; MessageLite; true; SerializePartialToZeroCopyStream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 163 | Summary: google::protobuf; MessageLite; true; SerializeToArray; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 164 | Summary: google::protobuf; MessageLite; true; SerializeToCodedStream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 165 | Summary: google::protobuf; MessageLite; true; SerializeToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 166 | Summary: google::protobuf; MessageLite; true; SerializeToOstream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 167 | Summary: google::protobuf; MessageLite; true; SerializeToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 168 | 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:122 | +| 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:114 | +| asio_streams.cpp:149:24:149:27 | *host | asio_streams.cpp:149:16:149:22 | call to resolve | provenance | MaD:115 | +| asio_streams.cpp:150:24:150:27 | *host | asio_streams.cpp:150:16:150:22 | call to resolve | provenance | MaD:116 | +| asio_streams.cpp:151:24:151:27 | *host | asio_streams.cpp:151:16:151:22 | call to resolve | provenance | MaD:117 | +| asio_streams.cpp:153:24:153:32 | host_view | asio_streams.cpp:153:16:153:22 | call to resolve | provenance | MaD:118 | +| asio_streams.cpp:154:24:154:32 | host_view | asio_streams.cpp:154:16:154:22 | call to resolve | provenance | MaD:119 | +| asio_streams.cpp:155:24:155:32 | host_view | asio_streams.cpp:155:16:155:22 | call to resolve | provenance | MaD:120 | +| asio_streams.cpp:156:24:156:32 | host_view | asio_streams.cpp:156:16:156:22 | call to resolve | provenance | MaD:121 | +| asio_streams.cpp:158:34:158:37 | *host | asio_streams.cpp:158:16:158:22 | call to resolve | provenance | MaD:106 | +| asio_streams.cpp:159:34:159:37 | *host | asio_streams.cpp:159:16:159:22 | call to resolve | provenance | MaD:107 | +| asio_streams.cpp:160:34:160:37 | *host | asio_streams.cpp:160:16:160:22 | call to resolve | provenance | MaD:108 | +| asio_streams.cpp:161:34:161:37 | *host | asio_streams.cpp:161:16:161:22 | call to resolve | provenance | MaD:109 | +| asio_streams.cpp:163:34:163:42 | host_view | asio_streams.cpp:163:16:163:22 | call to resolve | provenance | MaD:110 | +| asio_streams.cpp:164:34:164:42 | host_view | asio_streams.cpp:164:16:164:22 | call to resolve | provenance | MaD:111 | +| asio_streams.cpp:165:34:165:42 | host_view | asio_streams.cpp:165:16:165:22 | call to resolve | provenance | MaD:112 | +| asio_streams.cpp:166:34:166:42 | host_view | asio_streams.cpp:166:16:166:22 | call to resolve | provenance | MaD:113 | +| 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:114 | +| asio_streams.cpp:180:30:180:36 | *service | asio_streams.cpp:180:16:180:22 | call to resolve | provenance | MaD:115 | +| asio_streams.cpp:181:30:181:36 | *service | asio_streams.cpp:181:16:181:22 | call to resolve | provenance | MaD:116 | +| asio_streams.cpp:182:30:182:36 | *service | asio_streams.cpp:182:16:182:22 | call to resolve | provenance | MaD:117 | +| asio_streams.cpp:184:35:184:46 | service_view | asio_streams.cpp:184:16:184:22 | call to resolve | provenance | MaD:118 | +| asio_streams.cpp:185:35:185:46 | service_view | asio_streams.cpp:185:16:185:22 | call to resolve | provenance | MaD:119 | +| asio_streams.cpp:186:35:186:46 | service_view | asio_streams.cpp:186:16:186:22 | call to resolve | provenance | MaD:120 | +| asio_streams.cpp:187:35:187:46 | service_view | asio_streams.cpp:187:16:187:22 | call to resolve | provenance | MaD:121 | +| asio_streams.cpp:189:40:189:46 | *service | asio_streams.cpp:189:16:189:22 | call to resolve | provenance | MaD:106 | +| asio_streams.cpp:190:40:190:46 | *service | asio_streams.cpp:190:16:190:22 | call to resolve | provenance | MaD:107 | +| asio_streams.cpp:191:40:191:46 | *service | asio_streams.cpp:191:16:191:22 | call to resolve | provenance | MaD:108 | +| asio_streams.cpp:192:40:192:46 | *service | asio_streams.cpp:192:16:192:22 | call to resolve | provenance | MaD:109 | +| asio_streams.cpp:194:45:194:56 | service_view | asio_streams.cpp:194:16:194:22 | call to resolve | provenance | MaD:110 | +| asio_streams.cpp:195:45:195:56 | service_view | asio_streams.cpp:195:16:195:22 | call to resolve | provenance | MaD:111 | +| asio_streams.cpp:196:45:196:56 | service_view | asio_streams.cpp:196:16:196:22 | call to resolve | provenance | MaD:112 | +| asio_streams.cpp:197:45:197:56 | service_view | asio_streams.cpp:197:16:197:22 | call to resolve | provenance | MaD:113 | | 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 +264,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 +279,232 @@ 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 | | +| bdlbb.cpp:54:16:54:23 | call to source | bdlbb.cpp:56:49:56:52 | *call to data | provenance | TaintFunction | +| bdlbb.cpp:56:37:56:41 | copy output argument | bdlbb.cpp:58:42:58:45 | *blob | provenance | | +| bdlbb.cpp:56:49:56:52 | *call to data | bdlbb.cpp:56:37:56:41 | copy output argument | provenance | MaD:103 | +| bdlbb.cpp:58:37:58:39 | copy output argument | bdlbb.cpp:59:7:59:10 | * ... | provenance | | +| bdlbb.cpp:58:42:58:45 | *blob | bdlbb.cpp:58:37:58:39 | copy output argument | provenance | MaD:104 | +| 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:66:18:66:21 | *blob | provenance | | +| bdlbb.cpp:65:49:65:52 | *call to data | bdlbb.cpp:65:37:65:41 | copy output argument | provenance | MaD:103 | +| bdlbb.cpp:66:18:66:21 | *blob | bdlbb.cpp:66:29:66:32 | *call to buffer | provenance | MaD:99 | +| bdlbb.cpp:66:18:66:38 | *call to data | bdlbb.cpp:66:18:66:38 | *call to data | provenance | | +| bdlbb.cpp:66:18:66:38 | *call to data | bdlbb.cpp:67:7:67:8 | * ... | provenance | | +| bdlbb.cpp:66:29:66:32 | *call to buffer | bdlbb.cpp:66:18:66:38 | *call to data | provenance | MaD:101 | +| bdlbb.cpp:72:16:72:23 | call to source | bdlbb.cpp:74:49:74:52 | *call to data | provenance | TaintFunction | +| bdlbb.cpp:74:37:74:41 | copy output argument | bdlbb.cpp:75:18:75:21 | *blob | provenance | | +| bdlbb.cpp:74:49:74:52 | *call to data | bdlbb.cpp:74:37:74:41 | copy output argument | provenance | MaD:103 | +| bdlbb.cpp:75:18:75:21 | *blob | bdlbb.cpp:75:29:75:32 | *call to buffer | provenance | MaD:99 | +| bdlbb.cpp:75:18:75:46 | call to get | bdlbb.cpp:76:7:76:8 | * ... | provenance | | +| bdlbb.cpp:75:29:75:32 | *call to buffer | bdlbb.cpp:75:39:75:41 | *call to buffer | provenance | MaD:100 | +| bdlbb.cpp:75:39:75:41 | *call to buffer | bdlbb.cpp:75:18:75:46 | call to get | provenance | DataFlowFunction | +| bdlbb.cpp:80:16:80:23 | call to source | bdlbb.cpp:82:49:82:52 | *call to data | provenance | TaintFunction | +| bdlbb.cpp:82:37:82:41 | copy output argument | bdlbb.cpp:84:72:84:75 | *blob | provenance | | +| bdlbb.cpp:82:49:82:52 | *call to data | bdlbb.cpp:82:37:82:41 | copy output argument | provenance | MaD:103 | +| bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | provenance | | +| bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | bdlbb.cpp:85:7:85:8 | * ... | provenance | | +| bdlbb.cpp:84:72:84:75 | *blob | bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | provenance | MaD:105 | +| bdlbb.cpp:90:16:90:23 | call to source | bdlbb.cpp:92:48:92:51 | *call to data | provenance | TaintFunction | +| bdlbb.cpp:92:37:92:40 | copy output argument | bdlbb.cpp:94:46:94:48 | *src | provenance | | +| bdlbb.cpp:92:48:92:51 | *call to data | bdlbb.cpp:92:37:92:40 | copy output argument | provenance | MaD:103 | +| bdlbb.cpp:94:37:94:40 | copy output argument | bdlbb.cpp:96:42:96:44 | *dst | provenance | | +| bdlbb.cpp:94:46:94:48 | *src | bdlbb.cpp:94:37:94:40 | copy output argument | provenance | MaD:102 | +| bdlbb.cpp:96:37:96:39 | copy output argument | bdlbb.cpp:97:7:97:10 | * ... | provenance | | +| bdlbb.cpp:96:42:96:44 | *dst | bdlbb.cpp:96:37:96:39 | copy output argument | provenance | MaD:104 | +| 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:143 | +| 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:142 | +| 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:151 | +| 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:150 | +| 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:131 | +| 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:130 | +| 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:136 | +| 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:135 | +| 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:137 | +| 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:145 | +| 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:140 | +| 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:148 | +| 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:129 | +| 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:134 | +| 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:141 | +| 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:149 | +| 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:144 | +| 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:152 | +| 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:138 | +| 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:146 | +| 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:127 | +| 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:132 | +| 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:139 | +| 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:147 | +| 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:128 | +| 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:133 | +| 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:167 | +| 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:161 | +| 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:126 | +| 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:124 | +| 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:167 | +| 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:161 | +| 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:126 | +| 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:124 | +| 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:163 | +| 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:157 | +| 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:165 | +| 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:159 | +| 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:125 | +| 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:123 | +| 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:166 | +| 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:160 | +| 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:168 | +| 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:162 | +| 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:164 | +| 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:158 | +| 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:154 | +| 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:156 | +| 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:153 | +| 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:155 | | 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 +556,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 +590,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 +673,100 @@ 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:15:363:15 | *x | test.cpp:341:30:341:32 | arg | provenance | | +| test.cpp:363:15:363:15 | *x | test.cpp:363:5:363:5 | forward output argument [s] | 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: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: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: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 [ul] | test.cpp:374:30:374:30 | *f [ul] | 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 [ul] | provenance | | +| 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 [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: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 +942,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 +1064,287 @@ 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 | +| bdlbb.cpp:54:16:54:23 | call to source | semmle.label | call to source | +| bdlbb.cpp:56:37:56:41 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:56:49:56:52 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:58:37:58:39 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:58:42:58:45 | *blob | semmle.label | *blob | +| bdlbb.cpp:59:7:59:10 | * ... | 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:66:18:66:21 | *blob | semmle.label | *blob | +| bdlbb.cpp:66:18:66:38 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:66:18:66:38 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:66:29:66:32 | *call to buffer | semmle.label | *call to buffer | +| bdlbb.cpp:67:7:67:8 | * ... | semmle.label | * ... | +| bdlbb.cpp:72:16:72:23 | call to source | semmle.label | call to source | +| bdlbb.cpp:74:37:74:41 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:74:49:74:52 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:75:18:75:21 | *blob | semmle.label | *blob | +| bdlbb.cpp:75:18:75:46 | call to get | semmle.label | call to get | +| bdlbb.cpp:75:29:75:32 | *call to buffer | semmle.label | *call to buffer | +| bdlbb.cpp:75:39:75:41 | *call to buffer | semmle.label | *call to buffer | +| bdlbb.cpp:76:7:76:8 | * ... | semmle.label | * ... | +| bdlbb.cpp:80:16:80:23 | call to source | semmle.label | call to source | +| bdlbb.cpp:82:37:82:41 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:82:49:82:52 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | semmle.label | *call to getContiguousRangeOrCopy | +| bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | semmle.label | *call to getContiguousRangeOrCopy | +| bdlbb.cpp:84:72:84:75 | *blob | semmle.label | *blob | +| bdlbb.cpp:85:7:85:8 | * ... | semmle.label | * ... | +| bdlbb.cpp:90:16:90:23 | call to source | semmle.label | call to source | +| bdlbb.cpp:92:37:92:40 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:92:48:92:51 | *call to data | semmle.label | *call to data | +| bdlbb.cpp:94:37:94:40 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:94:46:94:48 | *src | semmle.label | *src | +| bdlbb.cpp:96:37:96:39 | copy output argument | semmle.label | copy output argument | +| bdlbb.cpp:96:42:96:44 | *dst | semmle.label | *dst | +| bdlbb.cpp:97:7:97:10 | * ... | 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 +1539,107 @@ 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:15:363:15 | *x | semmle.label | *x | +| test.cpp:365:30:365:30 | *f [s] | semmle.label | *f [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 [s] | semmle.label | call to get [s] | +| 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: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 [ul] | semmle.label | forward output argument [ul] | +| test.cpp:372:15:372:16 | *ul | semmle.label | *ul | +| test.cpp:374:30:374:30 | *f [ul] | semmle.label | *f [ul] | +| 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: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 +1861,8 @@ 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: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..2afe83bbaed7 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,139 @@ -| 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 | +| bdlbb.cpp:56:49:56:52 | *call to data | bdlbb.cpp:56:37:56:41 | copy output argument | +| bdlbb.cpp:58:42:58:45 | *blob | bdlbb.cpp:58:37:58:39 | copy output argument | +| bdlbb.cpp:65:49:65:52 | *call to data | bdlbb.cpp:65:37:65:41 | copy output argument | +| bdlbb.cpp:66:18:66:21 | *blob | bdlbb.cpp:66:29:66:32 | *call to buffer | +| bdlbb.cpp:66:29:66:32 | *call to buffer | bdlbb.cpp:66:18:66:38 | *call to data | +| bdlbb.cpp:74:49:74:52 | *call to data | bdlbb.cpp:74:37:74:41 | copy output argument | +| bdlbb.cpp:75:18:75:21 | *blob | bdlbb.cpp:75:29:75:32 | *call to buffer | +| bdlbb.cpp:75:29:75:32 | *call to buffer | bdlbb.cpp:75:39:75:41 | *call to buffer | +| bdlbb.cpp:82:49:82:52 | *call to data | bdlbb.cpp:82:37:82:41 | copy output argument | +| bdlbb.cpp:84:72:84:75 | *blob | bdlbb.cpp:84:12:84:65 | *call to getContiguousRangeOrCopy | +| bdlbb.cpp:84:72:84:75 | *blob | bdlbb.cpp:84:67:84:69 | getContiguousRangeOrCopy output argument | +| bdlbb.cpp:92:48:92:51 | *call to data | bdlbb.cpp:92:37:92:40 | copy output argument | +| bdlbb.cpp:94:46:94:48 | *src | bdlbb.cpp:94:37:94:40 | copy output argument | +| bdlbb.cpp:96:42:96:44 | *dst | bdlbb.cpp:96:37:96:39 | copy 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..ae4c4f657aba 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); // clean + } + { + Forwarder f; + unsigned long ul = ymlSource(); + f.forward(ul); + + ConstructableFromInt c = f.get(); + ymlSink(c.s); // clean + 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..d5b0b0cc0213 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. | @@ -4150,6 +4162,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. | @@ -5177,6 +5193,8 @@ | 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/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index d494c09e71d5..be894ab0404b 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 * | @@ -18539,6 +18588,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 * | @@ -24689,6 +24750,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..67e3c03d8f1f 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -25804,6 +25804,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..6efd5067acd1 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -21772,6 +21772,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/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..be7d41ad09a4 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -19777,6 +19777,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/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/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..384404fbc6ce 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}'"); } @@ -46,7 +46,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}"); + logger.LogDebug($"Configuring environment variables for the registry proxy at {this.proxy.Address}"); startInfo.EnvironmentVariables["HTTP_PROXY"] = this.proxy.Address; startInfo.EnvironmentVariables["HTTPS_PROXY"] = this.proxy.Address; 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..80c295afba46 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,14 +76,33 @@ 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); @@ -96,11 +119,26 @@ public FeedManager(ILogger logger, IDotNet dotnet, IDependabotProxy? dependabotP var reachableFallbackFeeds = GetReachableFallbackNugetFeeds(); return reachableFallbackFeeds.ToImmutableHashSet(); }); + lazyReachableDefaultFeeds = new Lazy>(() => CheckSpecifiedFeeds(DefaultFeeds)); + } + + public FeedManager(ILogger logger, IDotNet dotnet, IRegistryProxy? registryProxy, IFileProvider fileProvider) + : this(logger, dotnet, registryProxy, fileProvider, new FeedManagerIO(logger, registryProxy)) + { } - public FeedManager(ILogger logger, IDotNet dotnet, IDependabotProxy? dependabotProxy, IFileProvider fileProvider) - : this(logger, dotnet, dependabotProxy, fileProvider, new FeedManagerIO(logger, dependabotProxy)) + 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) @@ -124,10 +162,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 +181,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. @@ -266,22 +312,6 @@ private ImmutableHashSet CheckSpecifiedFeeds(ImmutableHashSet fe 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. /// @@ -315,8 +345,8 @@ private List 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,6 +359,10 @@ 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); } 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/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/IDependabotProxy.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxy.cs similarity index 57% rename from csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDependabotProxy.cs rename to csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxy.cs index 37a11900fddf..2537ac0b4054 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDependabotProxy.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxy.cs @@ -1,20 +1,25 @@ using System; -using System.Collections.Generic; +using System.Collections.Immutable; using System.Security.Cryptography.X509Certificates; namespace Semmle.Extraction.CSharp.DependencyFetching { - public interface IDependabotProxy : IDisposable + public interface IRegistryProxy : IDisposable { /// - /// The full address of the Dependabot proxy, if available. + /// The full address of the registry proxy, if available. /// string Address { get; } /// /// The URLs of package registries that are configured for the proxy. /// - HashSet RegistryURLs { get; } + 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. @@ -22,7 +27,7 @@ public interface IDependabotProxy : IDisposable string? CertificatePath { get; } /// - /// The certificate used for the Dependabot proxy. + /// The certificate used for the registry proxy. /// X509Certificate2? Certificate { get; } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDependabotProxyConfiguration.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxyConfiguration.cs similarity index 64% rename from csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDependabotProxyConfiguration.cs rename to csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxyConfiguration.cs index c67ee4fc39df..0ca48da995f0 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDependabotProxyConfiguration.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IRegistryProxyConfiguration.cs @@ -2,18 +2,18 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { - public interface IDependabotProxyConfiguration + public interface IRegistryProxyConfiguration { - // The host of the Dependabot proxy, if available. + // The host of the registry proxy, if available. string? Host { get; } - // The port of the Dependabot proxy, if available. + // The port of the registry proxy, if available. string? Port { get; } - // The certificate of the Dependabot proxy, if available. + // The certificate of the registry proxy, if available. string? Certificate { get; } - // The list of package registries that are configured for the proxy, if any. + // 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..fee72034781f 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -32,7 +32,7 @@ public NugetPackageRestorer( IFileProvider fileProvider, FileContent fileContent, IDotNet dotnet, - IDependabotProxy? dependabotProxy, + IRegistryProxy? registryProxy, IDiagnosticsWriter diagnosticsWriter, ILogger logger, ICompilationInfoContainer compilationInfoContainer) @@ -47,7 +47,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) @@ -460,7 +460,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..861622ca4c02 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs @@ -67,10 +67,6 @@ 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. /// @@ -169,15 +165,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(); diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxy.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxy.cs similarity index 51% rename from csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxy.cs rename to csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxy.cs index 3bf843d3fa2c..e16ea66725c7 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxy.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxy.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Immutable; using System.Collections.Generic; using System.IO; using System.Security.Cryptography.X509Certificates; @@ -9,30 +10,68 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { - public class DependabotProxy : IDependabotProxy + public class RegistryProxy : IRegistryProxy { /// /// 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 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; } - public HashSet RegistryURLs { get; } = []; + /// + /// 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 DependabotProxy(IDependabotProxyConfiguration config, ILogger logger, TemporaryDirectory tempWorkingDirectory) + private RegistryProxy(IRegistryProxyConfiguration 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")); + var certDirPath = new DirectoryInfo(Path.Join(tempWorkingDirectory.DirInfo.FullName, ".registry-proxy")); Directory.CreateDirectory(certDirPath.FullName); CertificatePath = Path.Join(certDirPath.FullName, "proxy.crt"); @@ -42,7 +81,7 @@ private DependabotProxy(IDependabotProxyConfiguration config, ILogger logger, Te writer.Write(config.Certificate); writer.Close(); - logger.LogInfo($"Stored Dependabot proxy certificate at {CertificatePath}"); + logger.LogInfo($"Stored registry proxy certificate at {CertificatePath}"); Certificate = X509Certificate2.CreateFromPem(config.Certificate); } @@ -56,16 +95,28 @@ private DependabotProxy(IDependabotProxyConfiguration config, ILogger logger, Te { 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'."); + 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); + logger.LogInfo($"Found private registry at '{registry.Url}'"); + registryMapping.AddOrUpdateToLatest(registry.Url, registry.ReplacesBase); } } } @@ -76,37 +127,37 @@ private DependabotProxy(IDependabotProxyConfiguration config, ILogger logger, Te } } - internal static IDependabotProxy? Make(ILogger logger, IDiagnosticsWriter diagnosticsWriter, TemporaryDirectory tempWorkingDirectory) + 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 Dependabot proxy to check for feed reachability. + // 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 `DependabotProxy` on those platforms. + // instance of `RegistryProxy` on those platforms. if (SystemBuildActions.Instance.IsWindows() || SystemBuildActions.Instance.IsMacOs()) { return null; } - return Make(new DependabotProxyConfiguration(), logger, diagnosticsWriter, tempWorkingDirectory); + return Make(new RegistryProxyConfiguration(), logger, diagnosticsWriter, tempWorkingDirectory); } /// - /// Creates an instance of the Dependabot proxy using the specified configuration. + /// 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 IDependabotProxy? Make( - IDependabotProxyConfiguration proxyConfig, ILogger logger, IDiagnosticsWriter diagnosticsWriter, TemporaryDirectory tempWorkingDirectory) + internal static IRegistryProxy? Make( + IRegistryProxyConfiguration proxyConfig, ILogger logger, IDiagnosticsWriter diagnosticsWriter, TemporaryDirectory tempWorkingDirectory) { if (string.IsNullOrWhiteSpace(proxyConfig.Host) || string.IsNullOrWhiteSpace(proxyConfig.Port)) { - logger.LogDebug("No Dependabot proxy credentials are configured."); + logger.LogDebug("No registry proxy credentials are configured."); return null; } - var result = new DependabotProxy(proxyConfig, logger, tempWorkingDirectory); - logger.LogInfo($"Dependabot proxy configured at {result.Address}"); + 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. diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxyConfiguration.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxyConfiguration.cs similarity index 87% rename from csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxyConfiguration.cs rename to csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxyConfiguration.cs index 2d81f94aea2c..aeb7e665b62f 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependabotProxyConfiguration.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/RegistryProxyConfiguration.cs @@ -2,7 +2,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { - public class DependabotProxyConfiguration : IDependabotProxyConfiguration + public class RegistryProxyConfiguration : IRegistryProxyConfiguration { public string? Host { get; } = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ProxyHost); 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..d812f008c43b 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/FeedManager.cs @@ -1,18 +1,32 @@ using Xunit; using System; using System.Collections.Generic; +using System.Collections.Immutable; 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 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 Dispose() { } } @@ -54,18 +68,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 +108,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 +129,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 +154,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 +177,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 +199,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 +222,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 +243,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/DependabotProxy.cs b/csharp/extractor/Semmle.Extraction.Tests/RegistryProxy.cs similarity index 51% rename from csharp/extractor/Semmle.Extraction.Tests/DependabotProxy.cs rename to csharp/extractor/Semmle.Extraction.Tests/RegistryProxy.cs index 9c8c762f5989..5705077c0219 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/DependabotProxy.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/RegistryProxy.cs @@ -6,7 +6,7 @@ namespace Semmle.Extraction.Tests { - public class DependabotConfigurationStub : IDependabotProxyConfiguration + public class RegistryConfigurationStub : IRegistryProxyConfiguration { public string? Host { get; set; } public string? Port { get; set; } @@ -20,19 +20,23 @@ public void AddEntry(Semmle.Util.DiagnosticMessage entry) { } public void Dispose() { } } - public class DependabotProxyTests + public class RegistryProxyTests { private static TemporaryDirectory MakeTemporaryDirectory() { - var tmp = Path.Join(Path.GetTempPath(), "DependabotProxyTests", Guid.NewGuid().ToString()); + 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 TestDependabotProxyCreation1() + public void TestRegistryProxyNoPort() { // Setup - var config = new DependabotConfigurationStub + var config = new RegistryConfigurationStub { Host = "localhost", Port = "", @@ -40,24 +44,28 @@ public void TestDependabotProxyCreation1() // Execute using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + 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 TestDependabotProxyCreation2() + public void TestRegistryProxyNoHost() { // Setup - var config = new DependabotConfigurationStub + var config = new RegistryConfigurationStub { Port = "8080", }; // Execute using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + using var proxy = RegistryProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); // Verify Assert.Null(proxy); @@ -96,11 +104,15 @@ public void TestDependabotProxyCreation2() -----END CERTIFICATE----- """; + /// + /// Verify that the registry proxy correctly handles the case + /// where the port, host, and certificate are specified. + /// [Fact] - public void TestDependabotProxyCertificate() + public void TestRegistryProxyCertificate() { // Setup - var config = new DependabotConfigurationStub + var config = new RegistryConfigurationStub { Port = "8080", Host = "localhost", @@ -109,7 +121,7 @@ public void TestDependabotProxyCertificate() // Execute using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + using var proxy = RegistryProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); // Verify Assert.NotNull(proxy); @@ -118,11 +130,16 @@ public void TestDependabotProxyCertificate() 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 TestDependabotRegistryUrls1() + public void TestRegistryProxyUrlsParseError() { // Setup - var config = new DependabotConfigurationStub + var config = new RegistryConfigurationStub { Port = "8080", Host = "localhost", @@ -131,18 +148,24 @@ public void TestDependabotRegistryUrls1() // Execute using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + using var proxy = RegistryProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); // Verify Assert.NotNull(proxy); - Assert.Equal([], proxy.RegistryURLs); + 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 TestDependabotRegistryUrls2() + public void TestRegistryProxyUrlsSingle() { // Setup - var config = new DependabotConfigurationStub + var config = new RegistryConfigurationStub { Port = "8080", Host = "localhost", @@ -151,20 +174,28 @@ public void TestDependabotRegistryUrls2() // Execute using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + 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 TestDependabotRegistryUrls3() + public void TestRegistryProxyUrls3() { // Setup - var config = new DependabotConfigurationStub + var config = new RegistryConfigurationStub { Port = "8080", Host = "localhost", @@ -173,13 +204,46 @@ public void TestDependabotRegistryUrls3() // Execute using var tempWorkingDirectory = MakeTemporaryDirectory(); - using var proxy = DependabotProxy.Make(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory); + 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); } } } diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 990c6ad4dbc8..07c306a65a9d 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.75-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 199504aa7dd3..94bf9c0f7db3 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.75-dev groups: - csharp - solorigate diff --git a/csharp/ql/consistency-queries/SsaConsistency.ql b/csharp/ql/consistency-queries/SsaConsistency.ql index 003e7ddd5e94..6b3f4510e487 100644 --- a/csharp/ql/consistency-queries/SsaConsistency.ql +++ b/csharp/ql/consistency-queries/SsaConsistency.ql @@ -10,7 +10,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/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/2026-09-03-replaces-base.md b/csharp/ql/lib/change-notes/2026-09-03-replaces-base.md new file mode 100644 index 000000000000..2a80f4a89eab --- /dev/null +++ b/csharp/ql/lib/change-notes/2026-09-03-replaces-base.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* 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/qlpack.yml b/csharp/ql/lib/qlpack.yml index 15fadfad8a0f..18ee2c149098 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.3.1-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp 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..b813d58875c1 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraph.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraph.qll @@ -188,9 +188,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..be2ed39a7d45 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -116,7 +116,7 @@ private predicate nonNullDef(SsaExplicitWrite def) { 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..8b86347ce460 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -2207,7 +2207,7 @@ private predicate readContentStep(Node node1, Content c, Node node2) { 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 diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll index 857212f90aac..c8648741d011 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll @@ -1107,7 +1107,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/AspNetCore.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/AspNetCore.qll index abdd81646828..37b0ff2884f9 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) { 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/Dead Code/DeadStoreOfLocal.ql b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql index 20f522e7b484..af6aa286ef07 100644 --- a/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql +++ b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql @@ -31,7 +31,7 @@ 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 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/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/change-notes/2026-08-27-csrf-autovalidate.md b/csharp/ql/src/change-notes/2026-08-27-csrf-autovalidate.md new file mode 100644 index 000000000000..7ba5dbe4467c --- /dev/null +++ b/csharp/ql/src/change-notes/2026-08-27-csrf-autovalidate.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* 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/2026-09-03-missed-firstordefault.md b/csharp/ql/src/change-notes/2026-09-03-missed-firstordefault.md new file mode 100644 index 000000000000..f4fed0de1301 --- /dev/null +++ b/csharp/ql/src/change-notes/2026-09-03-missed-firstordefault.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `cs/linq/missed-firstordefault`, that detects `foreach` loops that can be expressed more clearly using LINQ's `FirstOrDefault` method. diff --git a/csharp/ql/src/change-notes/2026-09-10-missed-linq-inoutref.md b/csharp/ql/src/change-notes/2026-09-10-missed-linq-inoutref.md new file mode 100644 index 000000000000..400e0bcd2ed0 --- /dev/null +++ b/csharp/ql/src/change-notes/2026-09-10-missed-linq-inoutref.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* 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. diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index a2f6f0aac243..c90064a3b913 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.9.4-dev groups: - csharp - queries 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..4efcaad323ac 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 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/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/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-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/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/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index 0267c6ef8ef5..5b85a3b05e44 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,7 @@ A list of queries for each suite and language `is available here `. 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 @@ -25,26 +29,52 @@ compatibility: partial some_relation.rel: run some_relation.qlo ``` -The `description` field is a textual description of the aim of the upgrade. +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. -The `compatibility` field takes one of four values: + * **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. - * **full**: results from the upgraded snapshot will be identical to results from a snapshot built with the new version of the toolchain. + * **breaking**: the step is unsafe and will prevent certain target queries from working. - * **backwards**: the step is safe and preserves the meaning of the old database, but new features may not work correctly on the upgraded snapshot. +Choose compatibility independently for the upgrade and downgrade, because the two directions +may preserve different amounts of information. - * **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. +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. - * **breaking**: the step is unsafe and will prevent certain queries from working. +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. -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. +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 commands look like this: +Some typical upgrade or downgrade commands look like this: ``` -// Delete a relation that has been replaced in the new scheme +// 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 @@ -83,7 +113,7 @@ 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. +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: @@ -107,43 +137,53 @@ You might also choose to test with a real-world database. 5. Verify that your queries produced sensible results. -#### Doing the upgrade manually +#### Creating the scripts manually -To create the upgrade directory manually, without using `prepare-db-upgrade.sh`: +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: -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` + ```sh + lang=go + schema_file=go/ql/lib/go.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 -``` +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") + ``` -3. Copy the old `.dbscheme` file to that directory, using the name old.dbscheme. +2. Create the upgrade directory using the old hash and the downgrade directory using the + new hash: -``` -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). + ```sh + upgrade_dir="$lang/ql/lib/upgrades/$old_hash" + downgrade_dir="$lang/downgrades/$new_hash" + mkdir -p "$upgrade_dir" "$downgrade_dir" + ``` -#### Doing the downgrade manually +3. Populate the upgrade directory. Here, `old.dbscheme` is the schema from `main`, and + the other `.dbscheme` file is the new target schema: -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`. + ```sh + git show "main:$schema_file" > "$upgrade_dir/old.dbscheme" + cp "$schema_file" "$upgrade_dir/$(basename "$schema_file")" + ``` -1. Get a hash of your new `.dbscheme` file, with `git hash-object ql/lib/.dbscheme` +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: -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 -``` + ```sh + cp "$schema_file" "$downgrade_dir/old.dbscheme" + git show "main:$schema_file" > "$downgrade_dir/$(basename "$schema_file")" + ``` -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). +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 diff --git a/go/actions/test/action.yml b/go/actions/test/action.yml index 25ff389dc01e..5c6fea376ecc 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.1" 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..3e1e307a0669 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, @@ -126,7 +126,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 +135,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..2123a6ad73f5 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,5 @@ 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 + Totals,,688,1134,1580 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/tables.go b/go/extractor/dbscheme/tables.go index b72c33795182..04dbdf40ba65 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") diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index fe798bc9f406..335655f421b7 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -1025,6 +1025,12 @@ 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 + if paren, ok := expr.(*ast.ParenExpr); ok { + extractExpr(tw, paren.X, parent, idx, skipExtractingValue) + return + } + lbl := tw.Labeler.LocalID(expr) extractTypeOf(tw, expr, lbl) @@ -1099,9 +1105,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 +1431,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..71447628b90f 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.1 // 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.41.0 + golang.org/x/sys v0.48.0 + golang.org/x/tools v0.50.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.23.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go/extractor/go.sum b/go/extractor/go.sum index f06d2fb2b567..b1ec90aa5b9e 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.41.0 h1:qJmnOUb4YB+FsEuM3HcWucdZASCPGhsX6uljO6pog0c= +golang.org/x/mod v0.41.0/go.mod h1:Ek9pY8RKWXwsWvd3rQiHYtMqkjSUV+s1Rj7j4H5Ur6o= +golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk= +golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= +golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo= +golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og= +golang.org/x/tools v0.50.0 h1:c2ifzfcuY7L90lZ2aKd8S4K2NpASF08SZx9ZuJkHmSU= +golang.org/x/tools v0.50.0/go.mod h1:7ulVMw3831Mwi5EZD6RomGyffr4VFjuNYXf2BbCEAV0= 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/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/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 353e4dd1cdcd..c9c318de2fa2 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.58-dev 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/change-notes/2026-08-13-cfg.md b/go/ql/lib/change-notes/2026-08-13-cfg.md new file mode 100644 index 000000000000..4614ebca0744 --- /dev/null +++ b/go/ql/lib/change-notes/2026-08-13-cfg.md @@ -0,0 +1,32 @@ +--- +category: breaking +--- +* 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. +* `ParenExpr` has been deprecated because parenthesized expressions are no + longer extracted as separate AST nodes. The child expression now directly + takes the place of the parenthesized expression. diff --git a/go/ql/lib/change-notes/2026-09-09-go-1.27-models.md b/go/ql/lib/change-notes/2026-09-09-go-1.27-models.md new file mode 100644 index 000000000000..94c1b4469b73 --- /dev/null +++ b/go/ql/lib/change-notes/2026-09-09-go-1.27-models.md @@ -0,0 +1,7 @@ +--- +category: minorAnalysis +--- +* 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/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/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/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..d0e7336b491e 100644 --- a/go/ql/lib/go.dbscheme +++ b/go/ql/lib/go.dbscheme @@ -336,7 +336,8 @@ case @expr.kind of | 51 = @andnotexpr | 52 = @sendchantypeexpr | 53 = @recvchantypeexpr -| 54 = @sendrcvchantypeexpr; +| 54 = @sendrcvchantypeexpr +| 55 = @rangeelementexpr; @basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; 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..4dc828abeffe 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: 7.3.2-dev 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..4b2a31cc8930 100644 --- a/go/ql/lib/semmle/go/Expr.qll +++ b/go/ql/lib/semmle/go/Expr.qll @@ -544,15 +544,11 @@ class SliceLit extends ArrayOrSliceLit { } /** - * A parenthesized expression. - * - * Examples: - * - * ```go - * (x + y) - * ``` + * DEPRECATED: `ParenExpr` is no longer extracted. Parenthesized expressions are + * transparent in the AST; the child expression takes the place of the parenthesized + * expression directly. */ -class ParenExpr extends @parenexpr, Expr { +deprecated class ParenExpr extends @parenexpr, Expr { /** Gets the expression between parentheses. */ Expr getExpr() { result = this.getChildExpr(0) } @@ -971,6 +967,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 +2145,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 +2195,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 +2243,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 +2292,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..1da4b1e51231 100644 --- a/go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll +++ b/go/ql/lib/semmle/go/controlflow/ControlFlowGraphImpl.qll @@ -1,2133 +1,1763 @@ /** - * 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) + private module Cfg0 = CfgLib::Make0; -/** - * 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() } -} - -/** - * 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; + private module Cfg1 = Cfg0::Make1; - EntryNode() { this = MkEntryNode(root) } + private module EarlyCfg2 = Cfg1::Make2; - override ControlFlow::Root getRoot() { result = root } + private module Cfg2 = Cfg1::Make2; - override string toString() { result = "entry" } + private import Cfg0 + private import Cfg1 + private import Cfg2 + import Public - 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; - - ExitNode() { this = MkExitNode(root) } - - override ControlFlow::Root getRoot() { result = root } - - override string toString() { result = "exit" } - - override Location getLocation() { result = root.getLocation() } -} + class CfgScope = Ast::Callable; -/** - * 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` 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` 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. + * 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. */ - 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` 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). - */ - 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 - } - - override predicate firstNode(ControlFlow::Node first) { - firstNode(this.getFirstChildTree(), first) + 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 lastNode(ControlFlow::Node last, Completion cmpl) { - super.lastNode(last, cmpl) - or - lastNode(this.getLastChildTree(), last, cmpl) - or - exists(LoopStmt ls | this = ls.getBody() | - lastNode(this, last, Continue(BranchTarget::of(ls))) and - cmpl = Done() - ) + class Callable extends AstNode { + Callable() { + exists(this.(Go::FuncDef).getBody()) + or + exists(this.(Go::File).getADecl()) + } } - 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) + AstNode callableGetBody(Callable c) { + result = c.(Go::FuncDef).getBody() 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) + result = c.(Go::File) } - } - private class AssignmentTree extends ControlFlowTree { - AssignmentTree() { - this instanceof Assignment or - this instanceof ValueSpec - } + class Parameter extends AstNode { + Parameter() { this = any(Go::Parameter p).getDeclaration() } - Expr getLhs(int i) { - result = this.(Assignment).getLhs(i) or - result = this.(ValueSpec).getNameExpr(i) - } + AstNode getPattern() { result = this } - int getNumLhs() { - result = this.(Assignment).getNumLhs() or - result = this.(ValueSpec).getNumName() + Expr getDefaultValue() { none() } } - Expr getRhs(int i) { - result = this.(Assignment).getRhs(i) or - result = this.(ValueSpec).getInit(i) + Parameter callableGetParameter(Callable c, int index) { + result = c.(Go::FuncDef).getParameter(index).getDeclaration() } - int getNumRhs() { - result = this.(Assignment).getNumRhs() or - result = this.(ValueSpec).getNumInit() + cached + Callable getEnclosingCallable(AstNode node) { + result = node.getEnclosingFunction() + or + not exists(node.getEnclosingFunction()) and + result = node.getFile() } - predicate isExtractingAssign() { this.getNumRhs() = 1 and this.getNumLhs() > 1 } + class Stmt = Go::Stmt; - 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() } - private class BinaryExprTree extends PostOrderTree, BinaryExpr { - override ControlFlow::Node getNode() { result = MkExprNode(this) } + class LoopStmt = Go::LoopStmt; - 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 - ) - ) - } + class WhileStmt extends LoopStmt { + WhileStmt() { 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() + Expr getCondition() { none() } } - override ControlFlowTree getChildTree(int i) { - i = 0 and result = this.getLeftOperand() - or - i = 1 and result = this.getRightOperand() + class DoStmt extends LoopStmt { + DoStmt() { none() } + + 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() } + } - private class DeferStmtTree extends PostOrderTree, DeferStmt { - override ControlFlow::Node getNode() { result = MkDeferNode(this) } + class AssignLogicalAndExpr extends CompoundAssignment { + AssignLogicalAndExpr() { none() } + } - override ControlFlowTree getChildTree(int i) { i = 0 and result = this.getCall() } - } + class AssignLogicalOrExpr extends CompoundAssignment { + AssignLogicalOrExpr() { none() } + } + + 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) { + // A statement carries the label of every `LabeledStmt` that wraps it. + // This is recursive because Go allows stacked labels (`L1: L2: stmt`), + // which the extractor represents as nested `LabeledStmt`s, so a single + // statement may have several labels. + exists(Go::LabeledStmt ls | n = ls.getStmt() | l = ls.getLabel() or hasLabel(ls, l)) or - lastNode(this.getThen(), last, cmpl) + // The `LabeledStmt` wrapper itself also carries its label. Blocks contain + // the wrapper (not the inner statement) as a direct child, so the shared + // library's block-level `goto` target resolution -- which looks for a + // labelled statement that is a direct child of a block -- matches on the + // wrapper. + l = n.(Go::LabeledStmt).getLabel() or - lastNode(this.getElse(), last, cmpl) + l = n.(Go::BreakStmt).getLabel() or - not exists(this.getElse()) and - last = this.getGuard(false) and - cmpl = Done() + l = n.(Go::ContinueStmt).getLabel() + or + // A `goto` statement carries its target label, so that the shared + // library's `beginAbruptCompletion` produces a *labelled* goto completion + // (matching the target label) rather than an unlabelled one. + 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 - // panic due to `nil` dereference - last = MkImplicitDeref(this.getBase()) and - cmpl = Panic() + n instanceof Go::GoStmt or - last = mkExprOrSkipNode(this) and - (cmpl = Done() or cmpl = Panic()) + n instanceof Go::CompoundAssignStmt + or + n instanceof Go::IncDecStmt + or + 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 + 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 - not exists(MkImplicitDeref(this.getBase())) and - firstNode(this.getIndex(), succ) + 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()) } - override predicate lastNode(ControlFlow::Node last, Completion cmpl) { none() } + /** Helper: blank identifier check */ + private predicate notBlankIdent(Go::Expr e) { not e instanceof Go::BlankIdent } - 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 + ) + ) 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 + | + 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) + additional predicate beginAbruptCompletion( + Ast::AstNode ast, PreControlFlowNode n, AbruptCompletion c, boolean always + ) { + ast instanceof Go::CallExpr 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.getInit(), 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 + 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 + exists(Go::LabeledStmt lbl | + ast = lbl.getStmt() and + n.isAfter(lbl) and + c.getSuccessorType() instanceof BreakSuccessor and + c.hasLabel(lbl.getLabel()) + ) or - lastNode(this.getCond(), last, cmpl) and - not cmpl.isNormal() + // A `break` in a communication clause body terminates the enclosing + // `select` statement, continuing after it. This mirrors the shared + // library's handling of `break` in a `switch` case body, but `select` is + // modeled language-specifically (it is not a `Switch`), so the break + // must be caught here. The break completion bubbles up the AST until it + // reaches a top-level statement of the comm clause body, at which point + // flow resumes after the `select`. An unlabeled `break` targets the + // innermost enclosing construct; a labeled `break` only targets this + // `select` if it (or a `LabeledStmt` wrapping it) carries that label. + 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 + exists(Label l | c.hasLabel(l) and hasLabel(sel, l)) + ) or - lastNode(this.getPost(), last, cmpl) and - not cmpl.isNormal() + 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") + ) or - last = this.getGuard(false) and - cmpl = Done() + // Function bodies are excluded from `Ast::BlockStmt`, so handle goto + // targets among their top-level statements here. + exists(Go::FuncDef fd, Go::Stmt target, Label l | + ast = fd.getBody() and + target = fd.getBody().getAStmt() and + not target instanceof Go::GotoStmt and + hasLabel(target, l) and + n.isBefore(target) and + c.getSuccessorType() instanceof GotoSuccessor and + c.hasLabel(l) + ) } - 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 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/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..768d62bb215d --- /dev/null +++ b/go/ql/lib/upgrades/5ff5325d274ae4f86defa195577bc7c1370b72fa/upgrade.properties @@ -0,0 +1,2 @@ +description: Add @rangeelementexpr, grouping the loop variables of a range statement +compatibility: partial 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/InconsistentCode/WhitespaceContradictsPrecedence.ql b/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql index 7e2846cf6b2f..d2abb8f4a5b9 100644 --- a/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql +++ b/go/ql/src/InconsistentCode/WhitespaceContradictsPrecedence.ql @@ -73,14 +73,19 @@ predicate interestingNesting(BinaryExpr inner, BinaryExpr outer) { /** 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 loc, Location left, Location right | + be.getLocation() = loc and be.getLeftOperand().getLocation() = left and be.getRightOperand().getLocation() = right and left.getFile() = right.getFile() and - left.getStartLine() = right.getStartLine() - | + left.getStartLine() = right.getStartLine() and op = be.getOperator() and - result = (right.getStartColumn() - left.getEndColumn() - op.length() - 1) / 2 + result = + ( + right.getStartColumn() - left.getEndColumn() - op.length() - 1 - + (left.getStartColumn() - loc.getStartColumn()) - + (loc.getEndColumn() - right.getEndColumn()) + ) / 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..7a523926f498 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 @@ -40,5 +40,11 @@ where // exclude variables that are not used at all exists(target.getAReference()) 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..68df01215919 100644 --- a/go/ql/src/RedundantCode/UnreachableStatement.ql +++ b/go/ql/src/RedundantCode/UnreachableStatement.ql @@ -14,11 +14,36 @@ 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 + not s instanceof EmptyStmt 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())) ) } @@ -63,18 +88,13 @@ predicate allowlist(Stmt 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()) - ) + // statements deliberately made unreachable by a constant condition, such as the code + // following `if true { return }` + exists(getPreviousStmt(s).(IfStmt).getCondition().getBoolValue()) } -from Stmt s, ControlFlow::Node fst +from Stmt s where - fst = s.getFirstControlFlowNode() and - not exists(nonGuardPredecessor(fst)) and + firstUnreachableStmt(s) and not allowlist(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/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..fdfdd1f67432 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.11-dev 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..28c1fdb2735a 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,3313 @@ -| 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 | Exceptional Exit | stmts.go:140:1:142:1 | Exit | +| 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:140:1:142:1 | Exceptional Exit | +| 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/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/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..1b9d472a6237 --- /dev/null +++ b/go/ql/test/query-tests/InconsistentCode/WhitespaceContradictsPrecedence/ParenthesizedOperands.go @@ -0,0 +1,7 @@ +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) +} 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/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/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..15227b6e59b4 --- /dev/null +++ b/go/ql/test/query-tests/RedundantCode/UnreachableStatement/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,12 @@ +consistencyOverview +| deadEnd | 9 | +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 | 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..4c53dfb2b800 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:26:9:26: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..d388a119214f 100644 --- a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected +++ b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected @@ -6,19 +6,19 @@ | 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:41:24:41:29 | nhooyr | websocketXss.go:40:3:40:40 | extract:1 ... := ... | websocketXss.go:41:24:41:29 | nhooyr | Cross-site scripting vulnerability due to $@. | websocketXss.go:40:3:40:40 | extract: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:55:24:55:31 | gorilla3 | websocketXss.go:54:3:54:38 | extract:1 ... := ... | websocketXss.go:55:24:55:31 | gorilla3 | Cross-site scripting vulnerability due to $@. | websocketXss.go:54:3:54: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:36 | call to Get | ReflectedXss.go:14:44:14:51 | username | provenance | | @@ -30,10 +30,10 @@ edges | contenttype.go:73:10:73:28 | call to FormValue | contenttype.go:79:11:79:14 | data | provenance | Src:MaD:8 | | contenttype.go:88:10:88:28 | call to FormValue | contenttype.go:91:4:91:7 | data | provenance | Src:MaD:8 | | contenttype.go:113:10:113:28 | call to FormValue | contenttype.go:114:50:114:53 | data | provenance | Src:MaD:8 | -| reflectedxsstest.go: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 | +| reflectedxsstest.go:30:2:30:44 | extract:0 ... := ... | reflectedxsstest.go:31:30:31:33 | file | provenance | Src:MaD:7 | +| reflectedxsstest.go:30:2:30:44 | extract:1 ... := ... | reflectedxsstest.go:34:46:34:60 | selection of Filename | provenance | Src:MaD:7 | +| 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 +43,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:9 | +| 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 | @@ -58,17 +58,19 @@ edges | 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: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: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: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:6 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:40:3:40:40 | extract: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:54:3:54:38 | extract:1 ... := ... | websocketXss.go:55:24:55: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 | @@ -88,7 +90,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 +109,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 +122,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,9 +139,11 @@ 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 | @@ -147,12 +151,12 @@ nodes | 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:40:3:40:40 | extract:1 ... := ... | semmle.label | extract: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:54:3:54:38 | extract:1 ... := ... | semmle.label | extract:1 ... := ... | | websocketXss.go:55:24:55: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-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/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/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/change-notes/2026-05-30-kclass-java-arg-k2-fix.md b/java/ql/lib/change-notes/2026-05-30-kclass-java-arg-k2-fix.md new file mode 100644 index 000000000000..bad7f5c21b30 --- /dev/null +++ b/java/ql/lib/change-notes/2026-05-30-kclass-java-arg-k2-fix.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* 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/2026-08-21-kotlin-2.4.20.md b/java/ql/lib/change-notes/2026-08-21-kotlin-2.4.20.md new file mode 100644 index 000000000000..22925adf104e --- /dev/null +++ b/java/ql/lib/change-notes/2026-08-21-kotlin-2.4.20.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Support for Kotlin 2.4.20 has been added. diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index d97a58c5c809..d6aefad45233 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.1-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java 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/qlpack.yml b/java/ql/src/qlpack.yml index 9c3cffa047ca..1bb0cdc16c09 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.11-dev 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/javascript/extractor/src/com/semmle/jcorn/Parser.java b/javascript/extractor/src/com/semmle/jcorn/Parser.java index a248a82dd140..cb9af6c6822c 100644 --- a/javascript/extractor/src/com/semmle/jcorn/Parser.java +++ b/javascript/extractor/src/com/semmle/jcorn/Parser.java @@ -2296,9 +2296,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); diff --git a/javascript/ql/lib/change-notes/2026-09-10-fastify-chainable-config-methods.md b/javascript/ql/lib/change-notes/2026-09-10-fastify-chainable-config-methods.md new file mode 100644 index 000000000000..986788d62111 --- /dev/null +++ b/javascript/ql/lib/change-notes/2026-09-10-fastify-chainable-config-methods.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* 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/qlpack.yml b/javascript/ql/lib/qlpack.yml index 97f274ff58ae..93c4370aab6d 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.2-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript 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/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/qlpack.yml b/javascript/ql/src/qlpack.yml index 83e2caff741c..456c7f4ca7b5 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.6-dev 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/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/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/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..a4059e6a3db9 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.bazel @@ -102,15 +102,3 @@ alias( actual = "@vendor_py__tree-sitter-graph-0.12.0//:tree_sitter_graph", tags = ["manual"], ) - -alias( - name = "tsp-0.19.0", - actual = "@vendor_py__tsp-0.19.0//:tsp", - tags = ["manual"], -) - -alias( - name = "tsp", - actual = "@vendor_py__tsp-0.19.0//:tsp", - 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..bca10349236c 100644 --- a/misc/bazel/3rdparty/py_deps/crates.bzl +++ b/misc/bazel/3rdparty/py_deps/crates.bzl @@ -1,21 +1,496 @@ ############################################################################### # @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"), + "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 +498,496 @@ 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__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/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.5.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.5.bazel index 5f173cfeddb3..ffdb58ca333d 100644 --- 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.5.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": [], @@ -98,8 +111,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.4", + version = "1.1.5", 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.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.104.bazel similarity index 84% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.102.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.104.bazel index 99de10c1ab76..17bcad0deff0 100644 --- 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.104.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": [], @@ -101,9 +114,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.102", + version = "1.0.104", deps = [ - "@vendor_ts__anyhow-1.0.102//: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 = "anyhow", rustc_env_files = [ ":cargo_toml_env_vars", @@ -159,7 +176,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.102", + version = "1.0.104", visibility = ["//visibility:private"], ) 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.8.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.6.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.8.bazel index 4f70598af859..c16e02e7515e 100644 --- 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.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": [], @@ -97,5 +110,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.7.6", + 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.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 index 089c4eb1ba86..e3694fae4c0c 100644 --- 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 @@ -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.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel index 7ea15cc09cd7..4e17b7cd53c8 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.6", + actual = "@vendor_ts__clap-4.6.6//:clap", tags = ["manual"], ) alias( name = "clap", - actual = "@vendor_ts__clap-4.6.1//:clap", + actual = "@vendor_ts__clap-4.6.6//: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.17.0", + actual = "@vendor_ts__either-1.17.0//:either", tags = ["manual"], ) alias( name = "either", - actual = "@vendor_ts__either-1.16.0//:either", + actual = "@vendor_ts__either-1.17.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,14 +176,14 @@ 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"], ) @@ -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.347", + actual = "@vendor_ts__ra_ap_base_db-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_cfg-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_hir-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_hir_def-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_ide_db-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_intern-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_parser-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_paths-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_project_model-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_span-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_stdx-0.0.347//: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.347", + actual = "@vendor_ts__ra_ap_stdx-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_syntax-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_syntax-bridge-0.0.347//: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.347//: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.347", + actual = "@vendor_ts__ra_ap_toolchain-0.0.347//:ra_ap_toolchain", + tags = ["manual"], +) + +alias( + name = "ra_ap_toolchain", + actual = "@vendor_ts__ra_ap_toolchain-0.0.347//:ra_ap_toolchain", + tags = ["manual"], +) + +alias( + name = "ra_ap_vfs-0.0.347", + actual = "@vendor_ts__ra_ap_vfs-0.0.347//: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.347//:ra_ap_vfs", tags = ["manual"], ) alias( - name = "rand-0.10.1", - actual = "@vendor_ts__rand-0.10.1//:rand", + name = "rand-0.10.2", + actual = "@vendor_ts__rand-0.10.2//:rand", tags = ["manual"], ) alias( name = "rand", - actual = "@vendor_ts__rand-0.10.1//:rand", + actual = "@vendor_ts__rand-0.10.2//: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.22.0", + actual = "@vendor_ts__serde_with-3.22.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.22.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.3", + actual = "@vendor_ts__syn-3.0.3//:syn", tags = ["manual"], ) alias( name = "syn", - actual = "@vendor_ts__syn-2.0.117//:syn", + actual = "@vendor_ts__syn-3.0.3//: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.4+spec-1.1.0", + actual = "@vendor_ts__toml-1.1.4-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.4-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"], ) 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.bitflags-1.3.2.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-util-0.3.32.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel index e545f6db19f8..20bbe9c068a9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-util-0.3.32.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "futures_util", + name = "bitflags", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -34,11 +34,6 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "alloc", - "slab", - "std", - ], crate_root = "src/lib.rs", edition = "2018", rustc_env_files = [ @@ -49,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=futures-util", + "crate-name=bitflags", "manual", "noclippy", "norustfmt", @@ -57,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": [], @@ -74,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": [], @@ -88,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": [], @@ -98,11 +106,5 @@ rust_library( "@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", - ], + 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.13.1.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.11.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.13.1.bazel index 02bd7814aa45..b8f3e99f2c2f 100644 --- 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.13.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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.11.1", + version = "2.13.1", ) 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.8.0.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.6.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.8.0.bazel index 76af71ed47f7..0d55909c3f1c 100644 --- 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.8.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": [], @@ -97,9 +110,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.6.1", + version = "1.8.0", deps = [ - "@vendor_ts__borsh-1.6.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 = "2018", + emit_warnings = False, pkg_name = "borsh", rustc_env_files = [ ":cargo_toml_env_vars", @@ -151,10 +168,10 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.6.1", + version = "1.8.0", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cfg_aliases-0.2.1//:cfg_aliases", + "@vendor_ts__cfg_aliases-0.2.2//:cfg_aliases", ], ) 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.3.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.20.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.20.3.bazel index 53fc8c4cf8ea..af7caf142940 100644 --- 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.3.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": [], @@ -96,5 +109,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "3.20.2", + 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.12.1.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.11.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytes-1.12.1.bazel index d16c296c5adc..a9491426dcdd 100644 --- 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.12.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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.11.1", + 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.5.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.2.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.2.5.bazel index 92a6e66df847..cf347ec4a10a 100644 --- 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.5.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": [], @@ -100,10 +113,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.2.2", + version = "1.2.5", deps = [ - "@vendor_ts__camino-1.2.2//:build_script_build", - "@vendor_ts__serde_core-1.0.228//:serde_core", + ":build_script_build", + "@vendor_ts__serde_core-1.0.229//:serde_core", ], ) @@ -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, @@ -144,6 +160,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "camino", rustc_env_files = [ ":cargo_toml_env_vars", @@ -158,7 +175,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.2.2", + version = "1.2.5", visibility = ["//visibility:private"], ) 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..1eff47aadbbc 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.5//: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.4.2.bazel similarity index 72% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.62.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.4.2.bazel index 0f2c0be546ad..dda8e612c875 100644 --- 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.4.2.bazel @@ -38,7 +38,7 @@ rust_library( "parallel", ], crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -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": [], @@ -96,47 +109,50 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.2.62", + version = "1.4.2", 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", + "@vendor_ts__find-msvc-tools-0.1.10//: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.186//:libc", # 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.186//:libc", # 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.186//:libc", # aarch64-unknown-linux-gnu, 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # x86_64-unknown-linux-gnu, 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.2.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.2.bazel index 3845773a67b4..b31b373c6558 100644 --- 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.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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.1", + 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.1.bazel similarity index 86% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chacha20-0.10.1.bazel index 7109de2bbe4a..ed67f9beea4f 100644 --- 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.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": [], @@ -96,7 +109,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.10.0", + version = "0.10.1", deps = [ "@vendor_ts__cfg-if-1.0.4//:cfg_if", "@vendor_ts__rand_core-0.10.1//:rand_core", @@ -122,6 +135,9 @@ rust_library( "@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-apple-ios-macabi": [ + "@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")) ], 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..852edb6b7a1f 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.1//: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.45.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.44.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.45.bazel index d4410c3639c8..d8d948f5fc55 100644 --- 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.45.bazel @@ -67,12 +67,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": [], @@ -84,13 +86,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": [], @@ -98,6 +110,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": [], @@ -108,10 +121,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.44", + version = "0.4.45", deps = [ "@vendor_ts__num-traits-0.2.19//:num_traits", - "@vendor_ts__serde-1.0.228//:serde", + "@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 @@ -119,6 +132,9 @@ rust_library( "@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 ], @@ -167,6 +183,12 @@ rust_library( "@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 ], @@ -176,12 +198,21 @@ rust_library( "@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.98//:js_sys", # wasm32-unknown-unknown - "@vendor_ts__wasm-bindgen-0.2.121//:wasm_bindgen", # 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 @@ -189,6 +220,9 @@ rust_library( "@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 ], 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.6.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.6.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.6.6.bazel index c03e48a40d2e..e23f372b0bee 100644 --- 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.6.bazel @@ -47,7 +47,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__clap_derive-4.6.1//:clap_derive", + "@vendor_ts__clap_derive-4.6.4//:clap_derive", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -65,12 +65,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 +84,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 +108,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,8 +119,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.6.1", + version = "4.6.6", deps = [ - "@vendor_ts__clap_builder-4.6.0//:clap_builder", + "@vendor_ts__clap_builder-4.6.6//: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.6.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.6.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.6.6.bazel index e80eda78e4eb..8a02211e7f1c 100644 --- 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.6.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": [], @@ -101,7 +114,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.6.0", + version = "4.6.6", deps = [ "@vendor_ts__anstream-1.0.0//:anstream", "@vendor_ts__anstyle-1.0.14//:anstyle", 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.4.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.6.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.6.4.bazel index dfbff2549f07..10a3b1ca209b 100644 --- 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.4.bazel @@ -55,12 +55,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": [], @@ -72,13 +74,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": [], @@ -86,6 +98,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": [], @@ -96,11 +109,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.6.1", + version = "4.6.4", 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", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-3.0.3//: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 index 701c96d00d9e..ba5946832aca 100644 --- 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 @@ -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.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 index 0defc99a0ac1..7093806abab5 100644 --- 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 @@ -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,22 +109,28 @@ rust_library( 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")) + "@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.186//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) + "@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.186//:libc", # cfg(all(target_arch = "aarch64", target_vendor = "apple")) + "@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.186//:libc", # cfg(all(target_arch = "aarch64", target_os = "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.186//:libc", # cfg(all(target_arch = "aarch64", target_os = "linux")) + "@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.186//:libc", # cfg(all(target_arch = "aarch64", target_os = "linux")) + "@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.16.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.15.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.16.bazel index 3a6999466ae1..e7a06ce4a92e 100644 --- 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.16.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": [], @@ -97,8 +110,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.5.15", + version = "0.5.16", deps = [ - "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", + "@vendor_ts__crossbeam-utils-0.8.22//:crossbeam_utils", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.7.bazel new file mode 100644 index 000000000000..8161357085a6 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.7.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.7", + deps = [ + ":build_script_build", + "@vendor_ts__crossbeam-epoch-0.9.20//:crossbeam_epoch", + "@vendor_ts__crossbeam-utils-0.8.22//: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.7", + 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.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.20.bazel new file mode 100644 index 000000000000..dd85387d6a66 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.20.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.20", + deps = [ + ":build_script_build", + "@vendor_ts__crossbeam-utils-0.8.22//: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.20", + 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 index 18797ac294ca..d5e02cf707e0 100644 --- 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 @@ -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 = "0.3.12", deps = [ - "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", + "@vendor_ts__crossbeam-utils-0.8.22//: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.22.bazel similarity index 84% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.21.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.22.bazel index ba484864b400..0678c856ecf4 100644 --- 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.22.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": [], @@ -101,9 +114,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.21", + version = "0.8.22", deps = [ - "@vendor_ts__crossbeam-utils-0.8.21//: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 = "crossbeam-utils", rustc_env_files = [ ":cargo_toml_env_vars", @@ -159,7 +176,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.8.21", + version = "0.8.22", visibility = ["//visibility:private"], ) 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 index 84da5eac9d94..7b56ff466da5 100644 --- 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 @@ -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/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 index a9da47fd6acd..0a3fe631c7cd 100644 --- 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 @@ -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": [], @@ -100,9 +113,9 @@ rust_library( 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__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", "@vendor_ts__strsim-0.11.1//:strsim", - "@vendor_ts__syn-2.0.117//:syn", + "@vendor_ts__syn-2.0.119//: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 index aa8c9c33128a..8f77c9a5718d 100644 --- 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 @@ -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": [], @@ -96,7 +109,7 @@ rust_proc_macro( 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", + "@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.dashmap-6.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.2.1.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.2.1.bazel index bdfab824cf51..764d17ef9257 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.2.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": [], @@ -97,10 +110,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "6.1.0", + version = "6.2.1", deps = [ "@vendor_ts__cfg-if-1.0.4//:cfg_if", - "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", + "@vendor_ts__crossbeam-utils-0.8.22//: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", 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.wit-bindgen-rust-macro-0.51.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-macros-1.1.1.bazel similarity index 78% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-macro-0.51.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-macros-1.1.1.bazel index 8372f1162962..71c8b152e00e 100644 --- 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.defmt-macros-1.1.1.bazel @@ -21,7 +21,7 @@ cargo_toml_env_vars( ) rust_proc_macro( - name = "wit_bindgen_rust_macro", + name = "defmt_macros", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -39,7 +39,7 @@ rust_proc_macro( ], ), crate_root = "src/lib.rs", - edition = "2024", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -48,7 +48,7 @@ rust_proc_macro( ], tags = [ "cargo-bazel", - "crate-name=wit-bindgen-rust-macro", + "crate-name=defmt-macros", "manual", "noclippy", "norustfmt", @@ -56,12 +56,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": [], @@ -73,13 +75,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": [], @@ -87,6 +99,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": [], @@ -97,16 +110,13 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.51.0", + version = "1.1.1", 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", + ":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", ], ) @@ -116,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, @@ -143,11 +156,9 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - edition = "2024", - link_deps = [ - "@vendor_ts__prettyplease-0.2.37//:prettyplease", - ], - pkg_name = "wit-bindgen-rust-macro", + edition = "2021", + emit_warnings = False, + pkg_name = "defmt-macros", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -156,12 +167,12 @@ cargo_build_script( ], tags = [ "cargo-bazel", - "crate-name=wit-bindgen-rust-macro", + "crate-name=defmt-macros", "manual", "noclippy", "norustfmt", ], - version = "0.51.0", + version = "1.1.1", visibility = ["//visibility:private"], ) 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.defmt-parser-1.0.0.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.6.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-parser-1.0.0.bazel index 5d08b0a7259b..852811357a37 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.defmt-parser-1.0.0.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "crossbeam_deque", + name = "defmt_parser", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -34,10 +34,6 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "default", - "std", - ], crate_root = "src/lib.rs", edition = "2021", rustc_env_files = [ @@ -48,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=crossbeam-deque", + "crate-name=defmt-parser", "manual", "noclippy", "norustfmt", @@ -56,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": [], @@ -73,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": [], @@ -87,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,9 +106,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.6", + version = "1.0.0", deps = [ - "@vendor_ts__crossbeam-epoch-0.9.18//:crossbeam_epoch", - "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", + "@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.17.0.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.16.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.17.0.bazel index 70e20043d922..df2158fdd46b 100644 --- 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.17.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": [], @@ -98,5 +111,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.16.0", + version = "1.17.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..23169f7be3f7 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.33//: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.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.10.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.9.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.10.bazel index 12cd2ecbe0cc..71ae64b18ae2 100644 --- 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.10.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2018", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.9", + version = "0.1.10", ) 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.toml-0.9.12+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.2.0.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.12+spec-1.1.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.2.0.bazel index 00dda2eead4c..9f93a855be15 100644 --- 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.foldhash-0.2.0.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "toml", + name = "foldhash", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -34,13 +34,6 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "default", - "display", - "parse", - "serde", - "std", - ], crate_root = "src/lib.rs", edition = "2021", rustc_env_files = [ @@ -51,7 +44,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=toml", + "crate-name=foldhash", "manual", "noclippy", "norustfmt", @@ -59,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": [], @@ -76,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": [], @@ -90,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": [], @@ -100,13 +106,5 @@ rust_library( "@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", - ], + 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.34.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-core-0.3.32.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-core-0.3.34.bazel index 0540232caa8d..85a921ef7ff8 100644 --- 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.34.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": [], @@ -97,5 +110,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.3.32", + 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.34.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-task-0.3.32.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.futures-task-0.3.34.bazel index 35f5694bc98b..f960f96829fa 100644 --- 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.34.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": [], @@ -97,5 +110,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.3.32", + version = "0.3.34", ) 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.3.bazel similarity index 72% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.4.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.4.3.bazel index c9cdb9f51292..58c7d8f79752 100644 --- 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.3.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": [], @@ -101,89 +114,107 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.2", + version = "0.4.3", deps = [ + ":build_script_build", "@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")) + "@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.186//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@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.186//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@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.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")))) + "@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.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")))) + "@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.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")))) + "@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.186//:libc", # cfg(any(target_os = "haiku", target_os = "redox", target_os = "nto", target_os = "aix")) + "@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.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")))) + "@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.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")))) + "@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.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")))) + "@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.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")))) + "@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.186//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "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: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")))) + "@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.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"))) + "@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.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")))) + "@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.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")))) + "@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.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")))) + "@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.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")))) + "@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: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: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: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: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.186//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "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-ios": [ - "@vendor_ts__libc-0.2.186//:libc", # cfg(any(target_os = "ios", target_os = "visionos", target_os = "watchos", target_os = "tvos")) + "@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.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")))) + "@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.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"))) + "@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.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")))) + "@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.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")))) + "@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": [], }), @@ -195,6 +226,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -227,6 +261,7 @@ cargo_build_script( ], ), edition = "2024", + emit_warnings = False, pkg_name = "getrandom", rustc_env_files = [ ":cargo_toml_env_vars", @@ -241,7 +276,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.4.2", + version = "0.4.3", visibility = ["//visibility:private"], ) 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.4.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.4.bazel index d26541b4fca7..3cfca3bda5b2 100644 --- 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.4.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2015", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.3.3", + 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..d070d3ff859d 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.33//: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.12.1.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.12.1.bazel index badd7cb27219..a77ecd159951 100644 --- 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.12.1.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2018", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -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": [], @@ -93,8 +106,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.10.0", + version = "0.12.1", deps = [ - "@vendor_ts__hashbrown-0.15.5//:hashbrown", + "@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.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..50c7c2a1c633 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.33//: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..28ebc572a4a9 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.2//: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 index 5a727af4c881..3029bf27404b 100644 --- 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 @@ -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": [], @@ -102,6 +115,6 @@ rust_library( deps = [ "@vendor_ts__equivalent-1.0.2//:equivalent", "@vendor_ts__hashbrown-0.17.1//:hashbrown", - "@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.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 index 7e7ec089ec53..96628c5e3400 100644 --- 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 @@ -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,8 +108,8 @@ rust_library( }), 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", + "@vendor_ts__bitflags-2.13.1//: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.wit-bindgen-rust-0.51.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.8.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-rust-0.51.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.8.bazel index b2266ab0a05d..e17e1cf2c57c 100644 --- 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.inotify-sys-0.1.8.bazel @@ -21,7 +21,7 @@ cargo_toml_env_vars( ) rust_library( - name = "wit_bindgen_rust", + name = "inotify_sys", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -39,7 +39,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2024", + edition = "2015", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -48,7 +48,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=wit-bindgen-rust", + "crate-name=inotify-sys", "manual", "noclippy", "norustfmt", @@ -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": [], @@ -97,17 +110,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.51.0", + version = "0.1.8", 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", + ":build_script_build", + "@vendor_ts__libc-0.2.189//:libc", ], ) @@ -117,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, @@ -144,11 +153,9 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - edition = "2024", - link_deps = [ - "@vendor_ts__prettyplease-0.2.37//:prettyplease", - ], - pkg_name = "wit-bindgen-rust", + edition = "2015", + emit_warnings = False, + pkg_name = "inotify-sys", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -157,12 +164,12 @@ cargo_build_script( ], tags = [ "cargo-bazel", - "crate-name=wit-bindgen-rust", + "crate-name=inotify-sys", "manual", "noclippy", "norustfmt", ], - version = "0.51.0", + version = "0.1.8", visibility = ["//visibility:private"], ) 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.10.3.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.9.7.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.10.3.bazel index ee299069b1e2..3f7651684c43 100644 --- 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.10.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": [], @@ -97,8 +110,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.9.7", - deps = [ - "@vendor_ts__memoffset-0.9.1//:memoffset", - ], + version = "0.10.3", ) 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.15.0.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.15.0.bazel index 359e0123e5f6..8719ca1daef2 100644 --- 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.15.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": [], @@ -98,8 +111,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.14.0", + version = "0.15.0", deps = [ - "@vendor_ts__either-1.16.0//:either", + "@vendor_ts__either-1.17.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.home-0.5.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-0.2.35.bazel similarity index 70% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.12.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-0.2.35.bazel index e1135d6cac8c..49d7dcd541e7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.12.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-0.2.35.bazel @@ -17,11 +17,14 @@ cargo_toml_env_vars( ) rust_library( - name = "home", + name = "jiff", srcs = glob( include = ["**/*.rs"], allow_empty = True, ), + aliases = { + "@vendor_ts__jiff-core-0.1.0//:jiff_core": "jcore", + }, compile_data = glob( include = ["**"], allow_empty = True, @@ -35,7 +38,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2024", + edition = "2021", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -44,7 +47,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=home", + "crate-name=jiff", "manual", "noclippy", "norustfmt", @@ -52,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": [], @@ -69,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": [], @@ -83,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": [], @@ -93,16 +109,17 @@ rust_library( "@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) + version = "0.2.35", + deps = [ + "@vendor_ts__jiff-core-0.1.0//:jiff_core", + ] + select({ + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ + "@vendor_ts__portable-atomic-1.14.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: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) + "@rules_rust//rust/platform:thumbv6m-none-eabi": [ + "@vendor_ts__portable-atomic-1.14.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.serde_with-3.20.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-core-0.1.0.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.20.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-core-0.1.0.bazel index ce7c7138c975..27913118c97a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.20.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-core-0.1.0.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "serde_with", + name = "jiff_core", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -37,14 +37,11 @@ rust_library( crate_features = [ "alloc", "default", - "macros", "std", + "tz-fat", ], 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", ], @@ -53,7 +50,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=serde_with", + "crate-name=jiff-core", "manual", "noclippy", "norustfmt", @@ -61,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": [], @@ -78,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": [], @@ -92,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": [], @@ -102,8 +112,5 @@ rust_library( "@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", - ], + version = "0.1.0", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-static-0.2.35.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-static-0.2.35.bazel new file mode 100644 index 000000000000..627b3855fe40 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jiff-static-0.2.35.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.0//: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.35", + deps = [ + "@vendor_ts__jiff-core-0.1.0//: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.35.bazel similarity index 63% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.35.bazel index 0df7e753130c..53ac9fcecba3 100644 --- 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.35.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": [], @@ -93,97 +106,118 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.34", + version = "0.1.35", deps = 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__getrandom-0.3.4//:getrandom", # cfg(windows) + "@vendor_ts__getrandom-0.4.3//:getrandom", # 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__getrandom-0.3.4//:getrandom", # cfg(windows) + "@vendor_ts__getrandom-0.4.3//:getrandom", # 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__getrandom-0.3.4//:getrandom", # cfg(windows) + "@vendor_ts__getrandom-0.4.3//:getrandom", # 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": [], }), 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.98.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.103.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.98.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.103.bazel index 0739ea021bba..22ce61014253 100644 --- 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.103.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": [], @@ -98,11 +111,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.3.98", + version = "0.3.103", 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", + "@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.kqueue-1.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.2.0.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.2.0.bazel index a663b6594fbb..86b101a51ca9 100644 --- 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.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": [], @@ -93,9 +106,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.1", + version = "1.2.0", deps = [ "@vendor_ts__kqueue-sys-1.1.2//:kqueue_sys", - "@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.kqueue-sys-1.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.1.2.bazel index 6ff785ad9d4b..27f1bb2787ef 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.1//: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 index c81cfa64f50f..e95f849bdc8d 100644 --- 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 @@ -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.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.189.bazel similarity index 84% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.186.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.189.bazel index 5d03831cec69..0d57aff487fb 100644 --- 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.189.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": [], @@ -101,9 +114,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.186", + version = "0.2.189", deps = [ - "@vendor_ts__libc-0.2.186//: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 = "libc", rustc_env_files = [ ":cargo_toml_env_vars", @@ -159,7 +176,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.2.186", + version = "0.2.189", visibility = ["//visibility:private"], ) 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..0d06a0596f3b 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.33//: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.33.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.29.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.33.bazel index ddb30f59c320..d1ecaae3eb6a 100644 --- 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.33.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": [], @@ -96,5 +109,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.29", + version = "0.4.33", ) 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.3.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.8.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.8.3.bazel index 98e6008f7669..e529b86c79df 100644 --- 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.3.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": [], @@ -98,5 +111,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.8.0", + 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.2.bazel similarity index 67% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.2.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.2.2.bazel index ebf8f0ce0c9c..0671b12bed92 100644 --- 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.2.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": [], @@ -99,111 +112,132 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.2.0", + version = "1.2.2", deps = [ - "@vendor_ts__log-0.4.29//:log", + "@vendor_ts__log-0.4.33//: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")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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.186//:libc", # cfg(any(unix, target_os = "hermit", target_os = "wasi")) + "@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..203d03e71ed9 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.33//: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.1//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # aarch64-apple-darwin ], "@rules_rust//rust/platform:aarch64-apple-ios": [ - "@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.0//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.2//: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.0//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.2//: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.0//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.2//: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__mio-1.2.2//: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__mio-1.2.2//: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__mio-1.2.2//: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__mio-1.2.2//: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__mio-1.2.2//: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__mio-1.2.2//: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__mio-1.2.2//: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.1//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # i686-apple-darwin ], "@rules_rust//rust/platform:i686-linux-android": [ "@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__mio-1.2.2//: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.0//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.2//: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__mio-1.2.2//:mio", # cfg(any(target_os = "linux", target_os = "android")) + ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.2//:mio", # cfg(any(target_os = "linux", target_os = "android")) + ], + "@rules_rust//rust/platform:mips-unknown-linux-gnu": [ + "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.2//: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__mio-1.2.2//: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__mio-1.2.2//: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__mio-1.2.2//:mio", # cfg(any(target_os = "linux", target_os = "android")) + ], + "@rules_rust//rust/platform:sparc64-unknown-linux-gnu": [ + "@vendor_ts__inotify-0.11.1//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.2.2//:mio", # cfg(any(target_os = "linux", target_os = "android")) + ], + "@rules_rust//rust/platform:sparc64-unknown-netbsd": [ + "@vendor_ts__kqueue-1.2.0//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.2//: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.0//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.2//: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.1//:bitflags", # cfg(target_os = "macos") "@vendor_ts__fsevent-sys-4.1.0//:fsevent_sys", # x86_64-apple-darwin ], "@rules_rust//rust/platform:x86_64-apple-ios": [ - "@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.0//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.2//: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.0//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.2//: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__mio-1.2.2//: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.0//:kqueue", # cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonflybsd", target_os = "ios")) + "@vendor_ts__mio-1.2.2//: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__mio-1.2.2//: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__mio-1.2.2//: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..2c1bf20ea4f4 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.1//: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..8e3d507c0369 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.15.2//: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..eade6c0096a3 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": [], 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 index 6d2c2e9933d6..8e4875e85850 100644 --- 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 @@ -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.portable-atomic-1.13.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.14.0.bazel similarity index 84% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.13.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.14.0.bazel index 1018f79e9d4b..6fc025b81775 100644 --- 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.14.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": [], @@ -101,9 +114,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.13.1", + version = "1.14.0", deps = [ - "@vendor_ts__portable-atomic-1.13.1//: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 = "portable-atomic", rustc_env_files = [ ":cargo_toml_env_vars", @@ -159,7 +176,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.13.1", + version = "1.14.0", visibility = ["//visibility:private"], ) 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..7f3f2eee0661 --- /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.14.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.107.bazel similarity index 84% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.106.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.107.bazel index dec96ff20b92..23a5bc388ef4 100644 --- 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.107.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": [], @@ -101,9 +114,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.106", + version = "1.0.107", deps = [ - "@vendor_ts__proc-macro2-1.0.106//:build_script_build", + ":build_script_build", "@vendor_ts__unicode-ident-1.0.24//: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", @@ -160,7 +177,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.106", + version = "1.0.107", visibility = ["//visibility:private"], ) 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.47.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.45.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.47.bazel index 8ffcb2477317..b590a4e2a41c 100644 --- 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.47.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": [], @@ -101,10 +114,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.45", + version = "1.0.47", deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:build_script_build", + ":build_script_build", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", ], ) @@ -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 = "quote", rustc_env_files = [ ":cargo_toml_env_vars", @@ -160,7 +177,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.45", + version = "1.0.47", visibility = ["//visibility:private"], ) 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.166.0.bazel similarity index 78% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.143.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.166.0.bazel index c26dd82ee19d..217e23c05e3d 100644 --- 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.166.0.bazel @@ -23,8 +23,8 @@ rust_library( 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", + "@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 = ["**"], @@ -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": [], @@ -97,11 +110,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.143.0", + version = "0.166.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__bitflags-2.13.1//: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.166.0.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.143.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_ast_ir-0.166.0.bazel index 3dfb4af1d544..fde84c2464d0 100644 --- 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.166.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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.143.0", + 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.166.0.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.143.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.166.0.bazel index 6b0e793e07f6..9ad0414dcc7e 100644 --- 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.166.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": [], @@ -93,7 +106,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.143.0", + 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.166.0.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.143.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.166.0.bazel index db5b0ccbd889..37e1346cecbc 100644 --- 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.166.0.bazel @@ -23,7 +23,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra-ap-rustc_index_macros-0.143.0//:ra_ap_rustc_index_macros": "rustc_index_macros", + "@vendor_ts__ra-ap-rustc_index_macros-0.166.0//:ra_ap_rustc_index_macros": "rustc_index_macros", }, compile_data = glob( include = ["**"], @@ -40,7 +40,7 @@ rust_library( 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", + "@vendor_ts__ra-ap-rustc_index_macros-0.166.0//:ra_ap_rustc_index_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -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": [], @@ -99,5 +112,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.143.0", + 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.166.0.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.143.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.166.0.bazel index 13c12f07ce27..fcf203517134 100644 --- 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.166.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": [], @@ -93,10 +106,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.143.0", + version = "0.166.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", ], ) 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.166.0.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.143.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.166.0.bazel index 383c1dcd3595..ac52299aef40 100644 --- 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.166.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": [], @@ -93,10 +106,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.143.0", + version = "0.166.0", deps = [ - "@vendor_ts__memchr-2.8.0//:memchr", + "@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", - "@vendor_ts__unicode-xid-0.2.6//:unicode_xid", ], ) 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.166.0.bazel similarity index 77% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.143.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_next_trait_solver-0.166.0.bazel index 8d9cd2fa75a1..a96b09799a04 100644 --- 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.166.0.bazel @@ -23,9 +23,9 @@ rust_library( 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", + "@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 = ["**"], @@ -43,7 +43,7 @@ rust_library( 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", + "@vendor_ts__ra-ap-rustc_type_ir_macros-0.166.0//:ra_ap_rustc_type_ir_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -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": [], @@ -102,10 +115,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.143.0", + version = "0.166.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__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.166.0.bazel similarity index 79% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.143.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.166.0.bazel index 9b4e436a3cad..3a70744bbf1b 100644 --- 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.166.0.bazel @@ -23,7 +23,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra-ap-rustc_lexer-0.143.0//:ra_ap_rustc_lexer": "rustc_lexer", + "@vendor_ts__ra-ap-rustc_lexer-0.166.0//:ra_ap_rustc_lexer": "rustc_lexer", }, compile_data = glob( include = ["**"], @@ -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": [], @@ -96,9 +109,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.143.0", + version = "0.166.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", + "@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.166.0.bazel similarity index 79% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.143.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.166.0.bazel index 2f8087c18312..4a6b70560c69 100644 --- 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.166.0.bazel @@ -23,7 +23,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra-ap-rustc_index-0.143.0//:ra_ap_rustc_index": "rustc_index", + "@vendor_ts__ra-ap-rustc_index-0.166.0//:ra_ap_rustc_index": "rustc_index", }, compile_data = glob( include = ["**"], @@ -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": [], @@ -96,12 +109,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.143.0", + version = "0.166.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__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.15.1//:smallvec", + "@vendor_ts__smallvec-1.15.2//: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.166.0.bazel similarity index 73% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.143.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir-0.166.0.bazel index 665970571fdc..e1fc8a0307f0 100644 --- 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.166.0.bazel @@ -23,9 +23,10 @@ rust_library( 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", + "@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 = ["**"], @@ -43,7 +44,7 @@ rust_library( 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", + "@vendor_ts__ra-ap-rustc_type_ir_macros-0.166.0//:ra_ap_rustc_type_ir_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -61,12 +62,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 +81,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 +105,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,17 +116,18 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.143.0", + version = "0.166.0", deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.11.1//:bitflags", + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__bitflags-2.13.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__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.15.2//: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.166.0.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir_macros-0.143.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_type_ir_macros-0.166.0.bazel index 899303af5f3f..d613a9685a4c 100644 --- 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.166.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": [], @@ -93,11 +106,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.143.0", + version = "0.166.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.ra_ap_base_db-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.347.bazel similarity index 71% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.347.bazel index 42da0d0298c4..e8f452d5908f 100644 --- 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.347.bazel @@ -23,12 +23,11 @@ rust_library( 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", + "@vendor_ts__ra_ap_cfg-0.0.347//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.347//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -48,8 +47,7 @@ rust_library( 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", + "@vendor_ts__salsa-macros-0.28.2//:salsa_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -67,12 +65,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": [], @@ -84,13 +84,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": [], @@ -98,6 +108,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": [], @@ -108,20 +119,20 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__dashmap-6.1.0//:dashmap", + "@vendor_ts__dashmap-6.2.1//: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__ra_ap_cfg-0.0.347//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.347//:ra_ap_vfs", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.2//:salsa", "@vendor_ts__semver-1.0.28//:semver", "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", + "@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.347.bazel similarity index 76% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.347.bazel index e02c90697076..6fc62fcd242b 100644 --- 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.347.bazel @@ -23,9 +23,9 @@ rust_library( 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", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -62,12 +62,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": [], @@ -79,13 +81,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": [], @@ -93,6 +105,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,12 +116,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.347//: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.347.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.347.bazel index 1fa96a118d49..1dbbd1ffb197 100644 --- 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.347.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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", ) 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.347.bazel similarity index 61% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.347.bazel index d8c848c0555c..1cd67187644c 100644 --- 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.347.bazel @@ -23,16 +23,16 @@ rust_library( 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", + "@vendor_ts__ra_ap_base_db-0.0.347//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.347//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_def-0.0.347//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.347//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.347//:ra_ap_hir_ty": "hir_ty", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -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": [], @@ -105,26 +118,28 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__either-1.17.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.347//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.347//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_def-0.0.347//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.347//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.347//:ra_ap_hir_ty", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.2//:salsa", + "@vendor_ts__serde_json-1.0.151//:serde_json", + "@vendor_ts__smallvec-1.15.2//:smallvec", "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", + "@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.347.bazel similarity index 64% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.347.bazel index 04e4a11e373b..0d7e43de017c 100644 --- 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.347.bazel @@ -23,16 +23,15 @@ rust_library( 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", + "@vendor_ts__ra_ap_base_db-0.0.347//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.347//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.347//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.347//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -48,10 +47,6 @@ rust_library( ), 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", ], @@ -68,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": [], @@ -85,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": [], @@ -99,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": [], @@ -109,34 +117,34 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.11.1//:bitflags", + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__bitflags-2.13.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__either-1.17.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__itertools-0.15.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__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.347//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.347//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.347//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.347//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.347//: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.25.2//:salsa", - "@vendor_ts__smallvec-1.15.1//:smallvec", - "@vendor_ts__thin-vec-0.2.18//:thin_vec", + "@vendor_ts__salsa-0.28.2//:salsa", + "@vendor_ts__smallvec-1.15.2//:smallvec", + "@vendor_ts__thin-vec-0.2.19//:thin_vec", "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", + "@vendor_ts__triomphe-0.1.16//:triomphe", ], ) 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.347.bazel similarity index 63% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.347.bazel index eb7d3976beef..14986eaed90f 100644 --- 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.347.bazel @@ -23,17 +23,16 @@ rust_library( 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", + "@vendor_ts__ra_ap_base_db-0.0.347//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.347//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_mbe-0.0.347//:ra_ap_mbe": "mbe", + "@vendor_ts__ra_ap_parser-0.0.347//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.347//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -49,10 +48,6 @@ rust_library( ), 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", ], @@ -69,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": [], @@ -86,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": [], @@ -100,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": [], @@ -110,26 +118,26 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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__either-1.17.0//:either", + "@vendor_ts__itertools-0.15.0//:itertools", + "@vendor_ts__ra_ap_base_db-0.0.347//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.347//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_mbe-0.0.347//:ra_ap_mbe", + "@vendor_ts__ra_ap_parser-0.0.347//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.347//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.2//:salsa", + "@vendor_ts__smallvec-1.15.2//:smallvec", + "@vendor_ts__thin-vec-0.2.19//:thin_vec", "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", + "@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.347.bazel similarity index 63% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.347.bazel index 4a52cf56457d..16baef7ffcb4 100644 --- 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.347.bazel @@ -23,15 +23,14 @@ rust_library( 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", + "@vendor_ts__ra_ap_base_db-0.0.347//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir_def-0.0.347//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.347//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_macros-0.0.347//:ra_ap_macros": "macros", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax": "syntax", }, compile_data = glob( include = ["**"], @@ -48,10 +47,8 @@ rust_library( 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", + "@vendor_ts__ra_ap_macros-0.0.347//:ra_ap_macros", + "@vendor_ts__serde_derive-1.0.229//:serde_derive", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -69,12 +66,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": [], @@ -86,13 +85,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": [], @@ -100,6 +109,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": [], @@ -110,40 +120,41 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__bitflags-2.13.1//:bitflags", "@vendor_ts__cov-mark-2.2.0//:cov_mark", - "@vendor_ts__either-1.16.0//:either", + "@vendor_ts__either-1.17.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__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.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__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.347//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir_def-0.0.347//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.347//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//: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.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__salsa-0.28.2//:salsa", + "@vendor_ts__serde-1.0.229//:serde", + "@vendor_ts__smallvec-1.15.2//: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.15//:triomphe", + "@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.347.bazel similarity index 62% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.347.bazel index 91ada35649e1..052b3752e4ce 100644 --- 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.347.bazel @@ -23,18 +23,17 @@ rust_library( 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", + "@vendor_ts__ra_ap_base_db-0.0.347//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir-0.0.347//:ra_ap_hir": "hir", + "@vendor_ts__ra_ap_macros-0.0.347//:ra_ap_macros": "macros", + "@vendor_ts__ra_ap_parser-0.0.347//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_profile-0.0.347//:ra_ap_profile": "profile", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_test_fixture-0.0.347//:ra_ap_test_fixture": "test_fixture", + "@vendor_ts__ra_ap_test_utils-0.0.347//:ra_ap_test_utils": "test_utils", + "@vendor_ts__ra_ap_vfs-0.0.347//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -54,9 +53,7 @@ rust_library( 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__ra_ap_macros-0.0.347//:ra_ap_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -74,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": [], @@ -91,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": [], @@ -105,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": [], @@ -115,33 +125,33 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.11.1//:bitflags", + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__bitflags-2.13.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__crossbeam-channel-0.5.16//:crossbeam_channel", + "@vendor_ts__either-1.17.0//:either", "@vendor_ts__fst-0.4.7//:fst", - "@vendor_ts__itertools-0.14.0//:itertools", + "@vendor_ts__itertools-0.15.0//:itertools", "@vendor_ts__line-index-0.1.2//:line_index", - "@vendor_ts__memchr-2.8.0//:memchr", + "@vendor_ts__memchr-2.8.3//: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__ra_ap_base_db-0.0.347//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir-0.0.347//:ra_ap_hir", + "@vendor_ts__ra_ap_parser-0.0.347//:ra_ap_parser", + "@vendor_ts__ra_ap_profile-0.0.347//:ra_ap_profile", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax", + "@vendor_ts__ra_ap_test_fixture-0.0.347//:ra_ap_test_fixture", + "@vendor_ts__ra_ap_test_utils-0.0.347//:ra_ap_test_utils", + "@vendor_ts__ra_ap_vfs-0.0.347//: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__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.2//:salsa", + "@vendor_ts__smallvec-1.15.2//:smallvec", "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", + "@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.347.bazel similarity index 79% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.347.bazel index e2b1c874bcbc..1f291e59dc89 100644 --- 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.347.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": [], @@ -93,12 +106,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__dashmap-6.1.0//:dashmap", + "@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.2//:rustc_hash", - "@vendor_ts__triomphe-0.1.15//:triomphe", + "@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.347.bazel similarity index 66% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.347.bazel index 28c08916e4ef..bf86fb6709f6 100644 --- 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.347.bazel @@ -23,15 +23,15 @@ rust_library( 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", + "@vendor_ts__ra_ap_hir_expand-0.0.347//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.347//:ra_ap_ide_db": "ide_db", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_proc_macro_api-0.0.347//:ra_ap_proc_macro_api": "proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.347//:ra_ap_project_model": "project_model", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_vfs-0.0.347//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.347//:ra_ap_vfs_notify": "vfs_notify", }, compile_data = glob( include = ["**"], @@ -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": [], @@ -104,20 +117,20 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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__anyhow-1.0.104//:anyhow", + "@vendor_ts__crossbeam-channel-0.5.16//:crossbeam_channel", + "@vendor_ts__itertools-0.15.0//:itertools", + "@vendor_ts__ra_ap_hir_expand-0.0.347//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.347//:ra_ap_ide_db", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_proc_macro_api-0.0.347//:ra_ap_proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.347//:ra_ap_project_model", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt", + "@vendor_ts__ra_ap_vfs-0.0.347//:ra_ap_vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.347//: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.347.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_macros-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_macros-0.0.347.bazel index 6411cde26a3b..df0cf72a853f 100644 --- 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.347.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": [], @@ -93,11 +106,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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.ra_ap_mbe-0.0.328.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.347.bazel similarity index 68% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.347.bazel index 8ba9ea8d50c4..72e8ac22a21b 100644 --- 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.347.bazel @@ -23,12 +23,12 @@ rust_library( 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", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.347//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-bridge-0.0.347//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt": "tt", }, 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": [], @@ -101,20 +114,20 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__bitflags-2.11.1//:bitflags", + "@vendor_ts__arrayvec-0.7.8//:arrayvec", + "@vendor_ts__bitflags-2.13.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", + "@vendor_ts__ra-ap-rustc_lexer-0.166.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.347//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-bridge-0.0.347//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.2//:salsa", + "@vendor_ts__smallvec-1.15.2//: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.347.bazel similarity index 79% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.347.bazel index 5e1577c1785a..0d1ea893a000 100644 --- 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.347.bazel @@ -23,7 +23,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_edition-0.0.328//:ra_ap_edition": "edition", + "@vendor_ts__ra_ap_edition-0.0.347//:ra_ap_edition": "edition", }, compile_data = glob( include = ["**"], @@ -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": [], @@ -99,12 +112,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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__ra-ap-rustc_lexer-0.166.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_edition-0.0.347//: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.15//: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.347.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.347.bazel index 6d809a8ca8ab..1fda9530d421 100644 --- 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.347.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": [], @@ -96,8 +109,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__camino-1.2.2//:camino", + "@vendor_ts__camino-1.2.5//: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.347.bazel similarity index 72% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.347.bazel index 6a874669b427..1ef46fa05cde 100644 --- 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.347.bazel @@ -23,11 +23,11 @@ rust_library( 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", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.347//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -47,7 +47,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.228//:serde_derive", + "@vendor_ts__serde_derive-1.0.229//:serde_derive", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -65,12 +65,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 +84,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 +108,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,20 +119,20 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.347//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt", "@vendor_ts__rayon-1.12.0//:rayon", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@vendor_ts__rustc-hash-2.1.3//: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__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.347.bazel similarity index 74% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.347.bazel index 327e50c225ba..d153d4dbdb0d 100644 --- 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.347.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": [], @@ -93,52 +106,59 @@ rust_library( "@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({ + version = "0.0.347", + deps = select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-sys-0.60.2//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.61.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__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.186//:libc", # cfg(all(target_os = "linux", target_env = "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.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@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.186//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@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.60.2//:windows_sys", # cfg(windows) + "@vendor_ts__windows-sys-0.61.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__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.186//:libc", # cfg(all(target_os = "linux", target_env = "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.186//:libc", # cfg(all(target_os = "linux", target_env = "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.186//:libc", # cfg(all(target_os = "linux", target_env = "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.60.2//:windows_sys", # cfg(windows) + "@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.186//:libc", # cfg(all(target_os = "linux", target_env = "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.186//:libc", # cfg(all(target_os = "linux", target_env = "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.347.bazel similarity index 67% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.347.bazel index d47c852ddab2..d5ee73c5b70a 100644 --- 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.347.bazel @@ -23,13 +23,13 @@ rust_library( 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", + "@vendor_ts__ra_ap_base_db-0.0.347//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.347//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.347//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_toolchain-0.0.347//:ra_ap_toolchain": "toolchain", }, compile_data = glob( include = ["**"], @@ -49,7 +49,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.228//:serde_derive", + "@vendor_ts__serde_derive-1.0.229//:serde_derive", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -67,12 +67,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": [], @@ -84,13 +86,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": [], @@ -98,6 +110,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": [], @@ -108,26 +121,26 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__anyhow-1.0.102//:anyhow", + "@vendor_ts__anyhow-1.0.104//:anyhow", "@vendor_ts__cargo_metadata-0.23.1//:cargo_metadata", - "@vendor_ts__itertools-0.14.0//:itertools", + "@vendor_ts__itertools-0.15.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__ra_ap_base_db-0.0.347//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.347//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.347//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_toolchain-0.0.347//:ra_ap_toolchain", + "@vendor_ts__rustc-hash-2.1.3//: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__serde-1.0.229//:serde", + "@vendor_ts__serde_json-1.0.151//:serde_json", + "@vendor_ts__temp-dir-0.2.0//:temp_dir", + "@vendor_ts__toml-1.1.4-spec-1.1.0//:toml", "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", + "@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.347.bazel similarity index 75% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.347.bazel index 6c6249a49ab9..c5a59b4aa618 100644 --- 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.347.bazel @@ -23,9 +23,9 @@ rust_library( 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", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.347//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -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": [], @@ -102,15 +115,15 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__hashbrown-0.14.5//:hashbrown", + "@vendor_ts__hashbrown-0.17.1//: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__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.347//:ra_ap_vfs", + "@vendor_ts__rustc-hash-2.1.3//:rustc_hash", + "@vendor_ts__salsa-0.28.2//: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.347.bazel similarity index 63% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.347.bazel index 632b844d54ad..eae24833ba54 100644 --- 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.347.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": [], @@ -93,106 +106,127 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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__crossbeam-channel-0.5.16//:crossbeam_channel", + "@vendor_ts__crossbeam-utils-0.8.22//: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.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__miow-0.6.1//:miow", # cfg(windows) - "@vendor_ts__windows-sys-0.60.2//:windows_sys", # 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.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__miow-0.6.1//:miow", # cfg(windows) - "@vendor_ts__windows-sys-0.60.2//:windows_sys", # 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.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__miow-0.6.1//:miow", # cfg(windows) - "@vendor_ts__windows-sys-0.60.2//:windows_sys", # 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.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": [], }), 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.347.bazel similarity index 73% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.347.bazel index e2cfe3404bfb..329e479a8c6b 100644 --- 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.347.bazel @@ -23,8 +23,8 @@ rust_library( 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", + "@vendor_ts__ra_ap_parser-0.0.347//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -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": [], @@ -100,19 +113,20 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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__either-1.17.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.347//:ra_ap_parser", + "@vendor_ts__ra_ap_stdx-0.0.347//: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.15.2//:smallvec", "@vendor_ts__smol_str-0.3.6//:smol_str", "@vendor_ts__tracing-0.1.44//:tracing", - "@vendor_ts__triomphe-0.1.15//:triomphe", + "@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.347.bazel similarity index 71% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.347.bazel index 4ce70110ed1a..2ff7d92f6fbf 100644 --- 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.347.bazel @@ -23,12 +23,12 @@ rust_library( 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", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.347//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt": "tt", }, 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": [], @@ -101,14 +114,14 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.347//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.347//: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.347.bazel similarity index 67% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_fixture-0.0.347.bazel index 40941eb64afe..54aaae05bc57 100644 --- 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.347.bazel @@ -23,15 +23,15 @@ rust_library( 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", + "@vendor_ts__ra_ap_base_db-0.0.347//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.347//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.347//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.347//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_test_utils-0.0.347//:ra_ap_test_utils": "test_utils", + "@vendor_ts__ra_ap_tt-0.0.347//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -66,12 +66,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": [], @@ -83,13 +85,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": [], @@ -97,6 +109,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": [], @@ -107,17 +120,17 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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", + "@vendor_ts__ra_ap_base_db-0.0.347//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.347//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.347//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.347//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_test_utils-0.0.347//:ra_ap_test_utils", + "@vendor_ts__ra_ap_tt-0.0.347//: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.347.bazel similarity index 76% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_utils-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_test_utils-0.0.347.bazel index 276ab3e576d8..3d8da77924bc 100644 --- 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.347.bazel @@ -23,9 +23,9 @@ rust_library( 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", + "@vendor_ts__ra_ap_paths-0.0.347//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_profile-0.0.347//:ra_ap_profile": "profile", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -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": [], @@ -98,13 +111,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", 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__ra_ap_paths-0.0.347//:ra_ap_paths", + "@vendor_ts__ra_ap_profile-0.0.347//:ra_ap_profile", + "@vendor_ts__ra_ap_stdx-0.0.347//: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.347.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.347.bazel index 9d73283c8059..c5c83dbb61b7 100644 --- 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.347.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": [], @@ -93,9 +106,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__camino-1.2.2//:camino", - "@vendor_ts__home-0.5.12//:home", + "@vendor_ts__camino-1.2.5//: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.347.bazel similarity index 75% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.347.bazel index b40b0afeeff4..dd899be231d5 100644 --- 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.347.bazel @@ -23,9 +23,9 @@ rust_library( 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", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -39,9 +39,6 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "default", - ], crate_root = "src/lib.rs", edition = "2024", rustc_env_files = [ @@ -60,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": [], @@ -77,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": [], @@ -91,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": [], @@ -101,15 +111,15 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__arrayvec-0.7.6//:arrayvec", + "@vendor_ts__arrayvec-0.7.8//: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__ra-ap-rustc_lexer-0.166.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_intern-0.0.347//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.347//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.347//: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.347.bazel similarity index 77% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.347.bazel index 77cf3adfd1c5..64cceaec8029 100644 --- 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.347.bazel @@ -23,8 +23,8 @@ rust_library( 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_paths-0.0.347//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -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": [], @@ -97,15 +110,15 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", + "@vendor_ts__crossbeam-channel-0.5.16//: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__ra_ap_paths-0.0.347//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.347//: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.347.bazel similarity index 76% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.328.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.347.bazel index 5ad594ec7e7e..f90dbad559e8 100644 --- 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.347.bazel @@ -23,9 +23,9 @@ rust_library( 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", + "@vendor_ts__ra_ap_paths-0.0.347//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_vfs-0.0.347//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -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": [], @@ -98,15 +111,15 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.328", + version = "0.0.347", deps = [ - "@vendor_ts__crossbeam-channel-0.5.15//:crossbeam_channel", + "@vendor_ts__crossbeam-channel-0.5.16//: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__ra_ap_paths-0.0.347//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + "@vendor_ts__ra_ap_vfs-0.0.347//:ra_ap_vfs", "@vendor_ts__rayon-1.12.0//:rayon", - "@vendor_ts__rustc-hash-2.1.2//:rustc_hash", + "@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.2.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.10.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.10.2.bazel index 58e4ecd87bd3..1a9a557e0979 100644 --- 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.2.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": [], @@ -101,10 +114,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.10.1", + version = "0.10.2", deps = [ - "@vendor_ts__chacha20-0.10.0//:chacha20", - "@vendor_ts__getrandom-0.4.2//:getrandom", + "@vendor_ts__chacha20-0.10.1//: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..fa4334a01aa6 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.17.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..17c347381467 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.7//:crossbeam_deque", + "@vendor_ts__crossbeam-utils-0.8.22//: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..aead8bda30de 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.1//: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.26.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.25.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.26.bazel index 78dd3d732f31..47ee7710c1ad 100644 --- 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.26.bazel @@ -41,7 +41,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__ref-cast-impl-1.0.25//:ref_cast_impl", + "@vendor_ts__ref-cast-impl-1.0.26//:ref_cast_impl", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -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": [], @@ -100,9 +113,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.25", + version = "1.0.26", deps = [ - "@vendor_ts__ref-cast-1.0.25//: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 = "ref-cast", rustc_env_files = [ ":cargo_toml_env_vars", @@ -154,7 +171,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.25", + version = "1.0.26", visibility = ["//visibility:private"], ) 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.26.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.25.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.26.bazel index 9f428e7b97f1..c87aa9d4b7cf 100644 --- 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.26.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": [], @@ -93,10 +106,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.25", + version = "1.0.26", 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-3.0.3//: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.13.1.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.12.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.13.1.bazel index 825fabb29b18..cd6a68b1a521 100644 --- 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.13.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": [], @@ -112,11 +125,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.12.3", + version = "1.13.1", 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", + "@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.18.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.14.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.18.bazel index 7d8af771594a..be8cac10495b 100644 --- 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.18.bazel @@ -80,12 +80,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": [], @@ -97,13 +99,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": [], @@ -111,6 +123,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": [], @@ -121,10 +134,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.14", + version = "0.4.18", 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", + "@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.11.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.10.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.11.bazel index 5f3ae8f1cce0..807d55bc267b 100644 --- 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.11.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": [], @@ -105,5 +118,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.8.10", + 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.17.0.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.18.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.17.0.bazel index e9841cd61c3a..42faf7d0eb79 100644 --- 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.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": [], @@ -93,7 +106,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.15.18", + version = "0.17.0", deps = [ "@vendor_ts__countme-3.0.1//:countme", "@vendor_ts__hashbrown-0.14.5//:hashbrown", 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.3.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.3.bazel index a18bdfd0e16b..92003c5bf12b 100644 --- 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.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": [], @@ -97,5 +110,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.1.2", + version = "2.1.3", ) 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.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.7.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.4.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.7.bazel index 8a273994a826..b62771f52d73 100644 --- 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.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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.4", + 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..a1becec81528 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.1//:bitflags", + "@vendor_ts__smallvec-1.15.2//: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.23.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.23.bazel index 442f3ba05905..11fd98830b5f 100644 --- 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.23.bazel @@ -56,12 +56,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": [], @@ -73,13 +75,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": [], @@ -87,6 +99,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": [], @@ -97,9 +110,9 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.22", + version = "1.0.23", deps = [ - "@vendor_ts__rustversion-1.0.22//: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 = "rustversion", rustc_env_files = [ ":cargo_toml_env_vars", @@ -151,7 +168,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.22", + version = "1.0.23", visibility = ["//visibility:private"], ) 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.28.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.28.2.bazel new file mode 100644 index 000000000000..2f98a655a97e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.28.2.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.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-macabi": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-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.2", + deps = [ + "@vendor_ts__boxcar-0.2.14//:boxcar", + "@vendor_ts__crossbeam-queue-0.3.12//:crossbeam_queue", + "@vendor_ts__crossbeam-utils-0.8.22//:crossbeam_utils", + "@vendor_ts__hashbrown-0.17.1//:hashbrown", + "@vendor_ts__hashlink-0.12.1//:hashlink", + "@vendor_ts__indexmap-2.14.0//: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.14.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.2//:salsa_macro_rules", + "@vendor_ts__smallvec-1.15.2//: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.28.2.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.25.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.28.2.bazel index 01b605f0ed6d..f39d94e97364 100644 --- 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.28.2.bazel @@ -35,7 +35,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.25.2", + version = "0.28.2", ) 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.28.2.bazel similarity index 79% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.25.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.28.2.bazel index 8905ee5100ba..285cd6eb9ce4 100644 --- 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.28.2.bazel @@ -38,7 +38,7 @@ rust_proc_macro( "default", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -55,12 +55,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": [], @@ -72,13 +74,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": [], @@ -86,6 +98,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": [], @@ -96,11 +109,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.25.2", + version = "0.28.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", + "@vendor_ts__proc-macro2-1.0.107//:proc_macro2", + "@vendor_ts__quote-1.0.47//:quote", + "@vendor_ts__syn-3.0.3//: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.2.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.2.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.2.2.bazel index 62eeb7975d6f..c5b85dc72667 100644 --- 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.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": [], @@ -93,11 +106,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.2.1", + version = "1.2.2", 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.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.229.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.228.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.229.bazel index f21954648d62..4c9dcee67365 100644 --- 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.229.bazel @@ -48,7 +48,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.228//:serde_derive", + "@vendor_ts__serde_derive-1.0.229//:serde_derive", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -66,12 +66,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": [], @@ -83,13 +85,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": [], @@ -97,6 +109,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": [], @@ -107,10 +120,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.228", + version = "1.0.229", deps = [ - "@vendor_ts__serde-1.0.228//:build_script_build", - "@vendor_ts__serde_core-1.0.228//:serde_core", + ":build_script_build", + "@vendor_ts__serde_core-1.0.229//:serde_core", ], ) @@ -120,6 +133,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -155,6 +171,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "serde", rustc_env_files = [ ":cargo_toml_env_vars", @@ -169,7 +186,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.228", + version = "1.0.229", visibility = ["//visibility:private"], ) 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.229.bazel similarity index 84% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.229.bazel index c2eff6baca9e..b81bf62830ed 100644 --- 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.229.bazel @@ -62,12 +62,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": [], @@ -79,13 +81,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": [], @@ -93,6 +105,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,9 +116,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.228", + version = "1.0.229", deps = [ - "@vendor_ts__serde_core-1.0.228//:build_script_build", + ":build_script_build", ], ) @@ -115,6 +128,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_core", rustc_env_files = [ ":cargo_toml_env_vars", @@ -163,7 +180,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.228", + version = "1.0.229", visibility = ["//visibility:private"], ) 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.229.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.229.bazel index 1d49666df317..50f204fa5810 100644 --- 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.229.bazel @@ -55,12 +55,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": [], @@ -72,13 +74,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": [], @@ -86,6 +98,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": [], @@ -96,10 +109,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.228", + version = "1.0.229", 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-3.0.3//: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.151.bazel similarity index 88% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.150.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.151.bazel index 9ebc6e12937d..e732ba6880b8 100644 --- 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.151.bazel @@ -71,6 +71,10 @@ rust_library( "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 @@ -123,12 +127,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": [], @@ -140,13 +146,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": [], @@ -154,6 +170,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": [], @@ -164,13 +181,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.150", + version = "1.0.151", deps = [ + ":build_script_build", "@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", + "@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.0//:indexmap", # aarch64-apple-darwin @@ -193,6 +210,9 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ "@vendor_ts__indexmap-2.14.0//:indexmap", # i686-unknown-linux-gnu ], + "@rules_rust//rust/platform:loongarch64-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.14.0//:indexmap", # loongarch64-unknown-linux-gnu + ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ "@vendor_ts__indexmap-2.14.0//:indexmap", # powerpc-unknown-linux-gnu ], @@ -227,6 +247,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -273,6 +296,10 @@ cargo_build_script( "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 @@ -322,6 +349,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "serde_json", rustc_env_files = [ ":cargo_toml_env_vars", @@ -336,7 +364,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.150", + version = "1.0.151", visibility = ["//visibility:private"], ) 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.salsa-0.25.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.22.0.bazel similarity index 78% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.25.2.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.22.0.bazel index 66b48573c99c..809eccc1644d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.25.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.22.0.bazel @@ -17,7 +17,7 @@ cargo_toml_env_vars( ) rust_library( - name = "salsa", + name = "serde_with", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -35,15 +35,15 @@ rust_library( ], ), crate_features = [ - "inventory", + "alloc", + "default", "macros", - "rayon", - "salsa_unstable", + "std", ], crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__salsa-macros-0.25.2//:salsa_macros", + "@vendor_ts__serde_with_macros-3.22.0//:serde_with_macros", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -53,7 +53,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=salsa", + "crate-name=serde_with", "manual", "noclippy", "norustfmt", @@ -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": [], @@ -102,23 +115,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.25.2", + version = "3.22.0", 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", + "@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.22.0.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.20.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.22.0.bazel index 043187a396ff..c90719f26579 100644 --- 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.22.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": [], @@ -93,11 +106,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "3.20.0", + version = "3.22.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", + "@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.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..328cfd4c282d 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": [], @@ -98,7 +111,7 @@ rust_library( "@vendor_ts__indexmap-2.14.0//: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..ff8fc1fbef23 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": [], 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-2.0.1.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-1.3.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-2.0.1.bazel index 1b3b26b2284d..ac9f97395ab6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-1.3.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-2.0.1.bazel @@ -39,7 +39,7 @@ rust_library( "std", ], crate_root = "src/lib.rs", - edition = "2015", + edition = "2018", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -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": [], @@ -97,5 +110,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.3.0", + 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.2.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.2.bazel index 9ffaf6afce71..70c58cf60d8a 100644 --- 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.2.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": [], @@ -98,5 +111,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.15.1", + version = "1.15.2", ) 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.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-2.0.117.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-3.0.3.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.117.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-3.0.3.bazel index b9ef3361a973..e0b53880465a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.117.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-3.0.3.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": [], @@ -105,10 +118,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.117", + version = "3.0.3", deps = [ - "@vendor_ts__proc-macro2-1.0.106//:proc_macro2", - "@vendor_ts__quote-1.0.45//:quote", + "@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.2.0.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.temp-dir-0.1.16.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.temp-dir-0.2.0.bazel index 37f2db5c2100..3e36d90998e5 100644 --- 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.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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.16", + version = "0.2.0", ) 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.19.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.18.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.19.bazel index c8be97281992..fb194d026295 100644 --- 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.19.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": [], @@ -97,5 +110,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.18", + 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.20.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.18.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.20.bazel index 7ba5989625a1..8394fdcae309 100644 --- 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.20.bazel @@ -45,7 +45,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__thiserror-impl-2.0.18//:thiserror_impl", + "@vendor_ts__thiserror-impl-2.0.20//:thiserror_impl", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -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": [], @@ -104,9 +117,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.18", + version = "2.0.20", deps = [ - "@vendor_ts__thiserror-2.0.18//:build_script_build", + ":build_script_build", ], ) @@ -116,6 +129,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -148,6 +164,7 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, pkg_name = "thiserror", rustc_env_files = [ ":cargo_toml_env_vars", @@ -162,7 +179,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "2.0.18", + version = "2.0.20", visibility = ["//visibility:private"], ) 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.20.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.18.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.20.bazel index ef46b223dbb3..736a71a8c44e 100644 --- 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.20.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": [], @@ -93,10 +106,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.18", + version = "2.0.20", 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-3.0.3//:syn", ], ) 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.10.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.10.bazel index e38f9011ecd3..c1c1ef3d1a33 100644 --- 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.10.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": [], @@ -93,7 +106,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.9", + 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.time-0.3.47.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.55.bazel similarity index 67% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.47.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.55.bazel index cdbbb0f4fce5..faf29bcb510b 100644 --- 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.55.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": [], @@ -100,120 +113,147 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.3.47", + version = "0.3.55", 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", + "@vendor_ts__time-core-0.1.9//:time_core", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ - "@vendor_ts__libc-0.2.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # aarch64-unknown-linux-gnu, 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # 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.186//:libc", # x86_64-unknown-linux-gnu, 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.9.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.8.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.9.bazel index 226d665682fa..45f2b038de8f 100644 --- 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.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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.8", + 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.32.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.27.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.32.bazel index 25f46454c286..c4ec5a92c262 100644 --- 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.32.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": [], @@ -93,9 +106,9 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.27", + version = "0.2.32", deps = [ "@vendor_ts__num-conv-0.2.2//:num_conv", - "@vendor_ts__time-core-0.1.8//:time_core", + "@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.12.0.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinyvec-1.11.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinyvec-1.12.0.bazel index e8962f83b88c..3883c7e6d450 100644 --- 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.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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.11.0", + version = "1.12.0", ) 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 index 4d480406c600..cdf427ca37cf 100644 --- 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 @@ -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.toml-1.1.2+spec-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.4+spec-1.1.0.bazel similarity index 79% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.2+spec-1.1.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-1.1.4+spec-1.1.0.bazel index fe92f9515829..b1c6aaeda2a3 100644 --- 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.4+spec-1.1.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": [], @@ -100,13 +113,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.2+spec-1.1.0", + version = "1.1.4+spec-1.1.0", deps = [ - "@vendor_ts__serde_core-1.0.228//:serde_core", + "@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.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", + "@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.3+spec-1.1.0.bazel similarity index 81% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.2+spec-1.1.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.1.3+spec-1.1.0.bazel index 8f32166ede44..a9a24773ba4c 100644 --- 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.3+spec-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": [], @@ -97,8 +110,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.2+spec-1.1.0", + version = "1.1.3+spec-1.1.0", deps = [ - "@vendor_ts__winnow-1.0.3//:winnow", + "@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.2+spec-1.1.0.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.1.1+spec-1.1.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.1.2+spec-1.1.0.bazel index c3005bdd0207..dd54460a4090 100644 --- 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.2+spec-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": [], @@ -97,5 +110,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.1.1+spec-1.1.0", + 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..0402a58f0438 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": [], 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..86562fce4f7a 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.33//: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..256bc632ba60 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.15.2//: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..ed5b99c982ae 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.2//: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..e0a6f80bba02 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.2//: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..495cf44d121f 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.2//: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.25.0.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-python-0.23.6.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-python-0.25.0.bazel index 4568e1556b2e..b9ebf31e11a6 100644 --- 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.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": [], @@ -97,10 +110,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.23.6", + version = "0.25.0", deps = [ + ":build_script_build", "@vendor_ts__tree-sitter-language-0.1.7//:tree_sitter_language", - "@vendor_ts__tree-sitter-python-0.23.6//: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", ], @@ -155,10 +172,10 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.23.6", + version = "0.25.0", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.62//:cc", + "@vendor_ts__cc-1.4.2//:cc", ], ) 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..4850c8596e19 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.2//: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..c5c24a658117 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.2//: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.16.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.15.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.16.bazel index 74d278eb3bcd..034e1081e2d7 100644 --- 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.16.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": [], @@ -99,9 +112,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.1.15", + version = "0.1.16", deps = [ - "@vendor_ts__serde-1.0.228//:serde", + "@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.atomic-polyfill-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-polyfill-1.0.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel index f20f39c53dca..24674e33d16e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-polyfill-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel @@ -21,7 +21,7 @@ cargo_toml_env_vars( ) rust_library( - name = "atomic_polyfill", + name = "typeid", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -39,7 +39,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2018", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -48,7 +48,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=atomic-polyfill", + "crate-name=typeid", "manual", "noclippy", "norustfmt", @@ -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,7 @@ rust_library( }), version = "1.0.3", deps = [ - "@vendor_ts__atomic-polyfill-1.0.3//:build_script_build", - "@vendor_ts__critical-section-1.2.0//:critical_section", + ":build_script_build", ], ) @@ -110,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,8 +152,9 @@ cargo_build_script( "WORKSPACE.bazel", ], ), - edition = "2021", - pkg_name = "atomic-polyfill", + edition = "2018", + emit_warnings = False, + pkg_name = "typeid", rustc_env_files = [ ":cargo_toml_env_vars", ], @@ -147,7 +163,7 @@ cargo_build_script( ], tags = [ "cargo-bazel", - "crate-name=atomic-polyfill", + "crate-name=typeid", "manual", "noclippy", "norustfmt", 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.126.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.121.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.126.bazel index e0f42d6a3b32..0c120808f80c 100644 --- 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.126.bazel @@ -45,7 +45,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__wasm-bindgen-macro-0.2.121//:wasm_bindgen_macro", + "@vendor_ts__wasm-bindgen-macro-0.2.126//:wasm_bindgen_macro", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -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": [], @@ -104,12 +117,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.121", + 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-0.2.121//:build_script_build", - "@vendor_ts__wasm-bindgen-shared-0.2.121//:wasm_bindgen_shared", + "@vendor_ts__wasm-bindgen-shared-0.2.126//:wasm_bindgen_shared", ], ) @@ -120,8 +133,11 @@ cargo_build_script( allow_empty = True, ), aliases = { - "@vendor_ts__rustversion-1.0.22//:rustversion": "rustversion_compat", + "@vendor_ts__rustversion-1.0.23//:rustversion": "rustversion_compat", }, + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -154,12 +170,13 @@ cargo_build_script( ], ), edition = "2021", + emit_warnings = False, link_deps = [ - "@vendor_ts__wasm-bindgen-shared-0.2.121//:wasm_bindgen_shared", + "@vendor_ts__wasm-bindgen-shared-0.2.126//:wasm_bindgen_shared", ], pkg_name = "wasm-bindgen", proc_macro_deps = [ - "@vendor_ts__rustversion-1.0.22//:rustversion", + "@vendor_ts__rustversion-1.0.23//:rustversion", ], rustc_env_files = [ ":cargo_toml_env_vars", @@ -174,7 +191,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.2.121", + version = "0.2.126", visibility = ["//visibility:private"], ) 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.126.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.121.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.126.bazel index 350d8d20fe08..2b6101c82ca1 100644 --- 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.126.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": [], @@ -93,9 +106,9 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.121", + version = "0.2.126", deps = [ - "@vendor_ts__quote-1.0.45//:quote", - "@vendor_ts__wasm-bindgen-macro-support-0.2.121//:wasm_bindgen_macro_support", + "@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.126.bazel similarity index 78% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.121.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.126.bazel index 368ec173ac73..b51cf891efa6 100644 --- 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.126.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": [], @@ -93,12 +106,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.121", + version = "0.2.126", 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", + "@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.126.bazel similarity index 84% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.121.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.126.bazel index a3e7da764a17..a633f2d5e6c9 100644 --- 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.126.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": [], @@ -97,10 +110,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.121", + version = "0.2.126", deps = [ + ":build_script_build", "@vendor_ts__unicode-ident-1.0.24//:unicode_ident", - "@vendor_ts__wasm-bindgen-shared-0.2.121//: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, links = "wasm_bindgen", pkg_name = "wasm-bindgen-shared", rustc_env_files = [ @@ -153,7 +170,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "0.2.121", + version = "0.2.126", visibility = ["//visibility:private"], ) 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.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.15.bazel index 156ad002d937..36f239035864 100644 --- 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 @@ -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.winnow-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.4.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.3.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-1.0.4.bazel index 178d093d62b5..fd703b0f1925 100644 --- 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.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": [], @@ -93,5 +106,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.3", + 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-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.23.bazel similarity index 83% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zmij-1.0.21.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zmij-1.0.23.bazel index be61c1bfb32c..6120db5840f5 100644 --- 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.23.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": [], @@ -97,9 +110,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.21", + version = "1.0.23", deps = [ - "@vendor_ts__zmij-1.0.21//: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 = "zmij", rustc_env_files = [ ":cargo_toml_env_vars", @@ -151,7 +168,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.21", + version = "1.0.23", visibility = ["//visibility:private"], ) 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 index ff3e776a7f8a..102ad485518e 100644 --- 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 @@ -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.zstd-safe-7.2.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel index eed1e00af815..160c8412f27c 100644 --- 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 @@ -62,12 +62,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": [], @@ -79,13 +81,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": [], @@ -93,6 +105,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": [], @@ -105,7 +118,7 @@ rust_library( }), version = "7.2.4", deps = [ - "@vendor_ts__zstd-safe-7.2.4//:build_script_build", + ":build_script_build", "@vendor_ts__zstd-sys-2.0.16-zstd.1.5.7//:zstd_sys", ], ) @@ -116,6 +129,9 @@ cargo_build_script( include = ["**/*.rs"], allow_empty = True, ), + build_script_env_files = [ + ":cargo_toml_env_vars", + ], compile_data = glob( include = ["**"], allow_empty = True, @@ -150,6 +166,7 @@ cargo_build_script( ], ), edition = "2018", + emit_warnings = False, link_deps = [ "@vendor_ts__zstd-sys-2.0.16-zstd.1.5.7//:zstd_sys", ], 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 index 6c42d38361a7..5c4a4055d94a 100644 --- 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 @@ -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,7 +117,7 @@ rust_library( }), version = "2.0.16+zstd.1.5.7", deps = [ - "@vendor_ts__zstd-sys-2.0.16-zstd.1.5.7//:build_script_build", + ":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, @@ -147,6 +163,7 @@ cargo_build_script( ], ), edition = "2018", + emit_warnings = False, links = "zstd", pkg_name = "zstd-sys", rustc_env_files = [ @@ -165,7 +182,7 @@ cargo_build_script( version = "2.0.16+zstd.1.5.7", visibility = ["//visibility:private"], deps = [ - "@vendor_ts__cc-1.2.62//:cc", + "@vendor_ts__cc-1.4.2//:cc", "@vendor_ts__pkg-config-0.3.33//:pkg_config", ], ) 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.6/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/clap-4.6.6/BUILD.bazel new file mode 100644 index 000000000000..4ec40d0e4236 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/clap-4.6.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 = "clap-4.6.6", + actual = "@vendor_ts__clap-4.6.6//: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..ee6ba1869700 --- /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.6//: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..9e6627eb70a1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/crates.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/crates.bzl @@ -1,21 +1,876 @@ ############################################################################### # @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.6"), + "encoding": Label("@vendor_ts//encoding-0.2.33"), + "lazy_static": Label("@vendor_ts//lazy_static-1.5.0"), + "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.17.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.347"), + "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.6"), + "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.347"), + "ra_ap_cfg": Label("@vendor_ts//ra_ap_cfg-0.0.347"), + "ra_ap_hir": Label("@vendor_ts//ra_ap_hir-0.0.347"), + "ra_ap_hir_def": Label("@vendor_ts//ra_ap_hir_def-0.0.347"), + "ra_ap_hir_expand": Label("@vendor_ts//ra_ap_hir_expand-0.0.347"), + "ra_ap_hir_ty": Label("@vendor_ts//ra_ap_hir_ty-0.0.347"), + "ra_ap_ide_db": Label("@vendor_ts//ra_ap_ide_db-0.0.347"), + "ra_ap_intern": Label("@vendor_ts//ra_ap_intern-0.0.347"), + "ra_ap_load-cargo": Label("@vendor_ts//ra_ap_load-cargo-0.0.347"), + "ra_ap_parser": Label("@vendor_ts//ra_ap_parser-0.0.347"), + "ra_ap_paths": Label("@vendor_ts//ra_ap_paths-0.0.347"), + "ra_ap_project_model": Label("@vendor_ts//ra_ap_project_model-0.0.347"), + "ra_ap_span": Label("@vendor_ts//ra_ap_span-0.0.347"), + "ra_ap_syntax": Label("@vendor_ts//ra_ap_syntax-0.0.347"), + "ra_ap_syntax-bridge": Label("@vendor_ts//ra_ap_syntax-bridge-0.0.347"), + "ra_ap_toolchain": Label("@vendor_ts//ra_ap_toolchain-0.0.347"), + "ra_ap_vfs": Label("@vendor_ts//ra_ap_vfs-0.0.347"), + "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.22.0"), + "toml": Label("@vendor_ts//toml-1.1.4+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.3"), + }, + }, + "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.0"), + "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.13.3"), + }, + }, + "shared/yeast": { + _COMMON_CONDITION: { + "clap": Label("@vendor_ts//clap-4.6.6"), + "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.3"), + }, + }, + "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.6"), + "encoding": Label("@vendor_ts//encoding-0.2.33"), + "lazy_static": Label("@vendor_ts//lazy_static-1.5.0"), + "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"), + }, + }, + "unified/swift-syntax-rs": { + }, +} + +_NORMAL_ALIASES = { + "ruby/extractor": { + _COMMON_CONDITION: { + }, + }, + "rust/ast-generator": { + _COMMON_CONDITION: { + Label("@vendor_ts//ra_ap_stdx-0.0.347"): "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.2"), + "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 +878,3258 @@ 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.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-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.1", + sha256 = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da", + type = "tar.gz", + urls = ["https://static.crates.io/crates/bitflags/2.13.1/download"], + strip_prefix = "bitflags-2.13.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.bitflags-2.13.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__borsh-1.8.0", + sha256 = "a88b7ea17d208c4193f2c1e6de3c35fe71f98c96982d5ced308bdcc749ff6e1f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/borsh/1.8.0/download"], + strip_prefix = "borsh-1.8.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.borsh-1.8.0.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.5", + sha256 = "bb1307f12aa967b5a58416e87b3653360e0fd614a016b6e970db08fecbb1b80d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/camino/1.2.5/download"], + strip_prefix = "camino-1.2.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.camino-1.2.5.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.2", + sha256 = "5d262e149917187838d5b42777c8253bcb64500067342904e7d429499a6f277e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/cc/1.4.2/download"], + strip_prefix = "cc-1.4.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.cc-1.4.2.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.1", + sha256 = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81", + type = "tar.gz", + urls = ["https://static.crates.io/crates/chacha20/0.10.1/download"], + strip_prefix = "chacha20-0.10.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chacha20-0.10.1.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.6", + sha256 = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca", + type = "tar.gz", + urls = ["https://static.crates.io/crates/clap/4.6.6/download"], + strip_prefix = "clap-4.6.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.6.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__clap_builder-4.6.6", + sha256 = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889", + type = "tar.gz", + urls = ["https://static.crates.io/crates/clap_builder/4.6.6/download"], + strip_prefix = "clap_builder-4.6.6", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.6.6.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__clap_derive-4.6.4", + sha256 = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061", + type = "tar.gz", + urls = ["https://static.crates.io/crates/clap_derive/4.6.4/download"], + strip_prefix = "clap_derive-4.6.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_derive-4.6.4.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__crossbeam-channel-0.5.16", + sha256 = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/crossbeam-channel/0.5.16/download"], + strip_prefix = "crossbeam-channel-0.5.16", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-channel-0.5.16.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__crossbeam-deque-0.8.7", + sha256 = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb", + type = "tar.gz", + urls = ["https://static.crates.io/crates/crossbeam-deque/0.8.7/download"], + strip_prefix = "crossbeam-deque-0.8.7", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-deque-0.8.7.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__crossbeam-epoch-0.9.20", + sha256 = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/crossbeam-epoch/0.9.20/download"], + strip_prefix = "crossbeam-epoch-0.9.20", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-epoch-0.9.20.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.22", + sha256 = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17", + type = "tar.gz", + urls = ["https://static.crates.io/crates/crossbeam-utils/0.8.22/download"], + strip_prefix = "crossbeam-utils-0.8.22", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-utils-0.8.22.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.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.17.0", + sha256 = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d", + type = "tar.gz", + urls = ["https://static.crates.io/crates/either/1.17.0/download"], + strip_prefix = "either-1.17.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.either-1.17.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.10", + sha256 = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de", + type = "tar.gz", + urls = ["https://static.crates.io/crates/find-msvc-tools/0.1.10/download"], + strip_prefix = "find-msvc-tools-0.1.10", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.find-msvc-tools-0.1.10.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.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.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.35", + sha256 = "668b7183bd07af9a4885f5c35b0cc5c83c4607a913c16b7e17291832910d2dcc", + type = "tar.gz", + urls = ["https://static.crates.io/crates/jiff/0.2.35/download"], + strip_prefix = "jiff-0.2.35", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jiff-0.2.35.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__jiff-core-0.1.0", + sha256 = "7feca88439efe53da3754500c1851dedf3cb36c524dd5cf8225cc0794de95d09", + type = "tar.gz", + urls = ["https://static.crates.io/crates/jiff-core/0.1.0/download"], + strip_prefix = "jiff-core-0.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jiff-core-0.1.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__jiff-static-0.2.35", + sha256 = "3a69dcb3a21cfb32ce1cd056169337ca284af0766dd766e7878819b251a49204", + type = "tar.gz", + urls = ["https://static.crates.io/crates/jiff-static/0.2.35/download"], + strip_prefix = "jiff-static-0.2.35", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.jiff-static-0.2.35.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.0", + sha256 = "273c0752728918e0ac4976f2b275b6fefb9ecd400585dec929419f3844cd87b5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/kqueue/1.2.0/download"], + strip_prefix = "kqueue-1.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.kqueue-1.2.0.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__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.33", + sha256 = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad", + type = "tar.gz", + urls = ["https://static.crates.io/crates/log/0.4.33/download"], + strip_prefix = "log-0.4.33", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.4.33.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.2", + sha256 = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427", + type = "tar.gz", + urls = ["https://static.crates.io/crates/mio/1.2.2/download"], + strip_prefix = "mio-1.2.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.mio-1.2.2.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.14.0", + sha256 = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/portable-atomic/1.14.0/download"], + strip_prefix = "portable-atomic-1.14.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.portable-atomic-1.14.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.347", + sha256 = "7ea804efdf7c1fdbdac7c1b08002700a6f2930590399abcf84d55b4d4a894116", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.347/download"], + strip_prefix = "ra_ap_base_db-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_cfg-0.0.347", + sha256 = "c50ba7c60bc08ef48d2a930c5f897349fb0a72cf53e86c0374476f2583d1f098", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.347/download"], + strip_prefix = "ra_ap_cfg-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_edition-0.0.347", + sha256 = "238a2d0108f16fe859e369c5aba251abccd10fae513391ee4d119ac6a48ffec7", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.347/download"], + strip_prefix = "ra_ap_edition-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_hir-0.0.347", + sha256 = "9b0ff8d334193f5535c13a6749d2ed8ee4c417f75a2a92ffff24eee475097fdd", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.347/download"], + strip_prefix = "ra_ap_hir-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_hir_def-0.0.347", + sha256 = "41d0148d0b1f176f27d55df6ac6dc662ed65c55cae367aeb9f30472879626cd5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.347/download"], + strip_prefix = "ra_ap_hir_def-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_hir_expand-0.0.347", + sha256 = "b494d16c4a066ffe135ef730b01806539e87d4e5bb26acbd7cf9ccd2ffb238df", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.347/download"], + strip_prefix = "ra_ap_hir_expand-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_hir_ty-0.0.347", + sha256 = "106393ec163f4cb9537721a04cd5e4d5ec642602c46f524e65a31a431be10269", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.347/download"], + strip_prefix = "ra_ap_hir_ty-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_ide_db-0.0.347", + sha256 = "c3ea305ce763f44928d29766c165982dd0a1c9fdba429296889d9e8e64dd28a5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.347/download"], + strip_prefix = "ra_ap_ide_db-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_intern-0.0.347", + sha256 = "0a6be54b5f8a47e4aee183dd985440bb2e46d587270f63a6fcb03409a0de7054", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.347/download"], + strip_prefix = "ra_ap_intern-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_load-cargo-0.0.347", + sha256 = "96a50dad86901f2f0dab1e54ccf2dd43ce3bcb934bcaae1c3fa4884a1c45f77a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.347/download"], + strip_prefix = "ra_ap_load-cargo-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_macros-0.0.347", + sha256 = "478606f8a75d1c4f8e6bfd4874ecf56303a690e270cffbd82e9fb700637500c5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_macros/0.0.347/download"], + strip_prefix = "ra_ap_macros-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_macros-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_mbe-0.0.347", + sha256 = "c8d1b45159a9f2e6d61bec480d49a5d2c4a1c8215a75f01cf1d6ae7042cc0330", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.347/download"], + strip_prefix = "ra_ap_mbe-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_parser-0.0.347", + sha256 = "8bdb9f2e027f40bbaeff62c026e1affabe691467c0553857f6eb7e36093c5b6f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.347/download"], + strip_prefix = "ra_ap_parser-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_paths-0.0.347", + sha256 = "36bc14237aa65d051028cbb54b0a0e0a1d53487b3f647c2b11667870720af9db", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.347/download"], + strip_prefix = "ra_ap_paths-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_proc_macro_api-0.0.347", + sha256 = "3c56d7dacb79f01f5d9ab0a25b232acf37d3104d176e67d2985e9e389834c553", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.347/download"], + strip_prefix = "ra_ap_proc_macro_api-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_profile-0.0.347", + sha256 = "6f6a81ebc5ef6f42d86ac8d20c82d4132010f28af93da37f08d127eeea24b852", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.347/download"], + strip_prefix = "ra_ap_profile-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_project_model-0.0.347", + sha256 = "9cf562304b786b7fa9089d2e0ae489d73abbda1732b0a820977a6fa7f9f5db0c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.347/download"], + strip_prefix = "ra_ap_project_model-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_span-0.0.347", + sha256 = "6358a99deb3e9564a3702731031bd6a59ab6843258f56697971c2591d142aa8a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_span/0.0.347/download"], + strip_prefix = "ra_ap_span-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_stdx-0.0.347", + sha256 = "808a663a921ead35b75a74a2eebe7ab84e5ced29c594e9bf3c77914caf8b77c0", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.347/download"], + strip_prefix = "ra_ap_stdx-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_syntax-0.0.347", + sha256 = "733ea008d3847dac53a6463689fd595a1d9459db09b1dc2306f2293dc130f586", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.347/download"], + strip_prefix = "ra_ap_syntax-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_syntax-bridge-0.0.347", + sha256 = "f1ea2603396e114a6db5145508242ce9d238983533e3bdc4019cb473247c5e07", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.347/download"], + strip_prefix = "ra_ap_syntax-bridge-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_test_fixture-0.0.347", + sha256 = "77da42ce97d6b9de208c9e9fba23244da564130ee0d892af03d0a6eb72ba8672", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_test_fixture/0.0.347/download"], + strip_prefix = "ra_ap_test_fixture-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_test_fixture-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_test_utils-0.0.347", + sha256 = "fdfcc378493db43a2b837d9cd62c4c91c5d33302ae639b3dbf6d56ed97df6e63", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_test_utils/0.0.347/download"], + strip_prefix = "ra_ap_test_utils-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_test_utils-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_toolchain-0.0.347", + sha256 = "5f7748b05a913c21f6182b4c2d7c7009251938b8eb01a2b96e61d0c7ca4aacc2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.347/download"], + strip_prefix = "ra_ap_toolchain-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_tt-0.0.347", + sha256 = "babe00307d454b585a66e51f1fe6ccdfd1f82a200ef75374c80e843520cb3f7f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.347/download"], + strip_prefix = "ra_ap_tt-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_vfs-0.0.347", + sha256 = "a730486f6595655431750c15faf4332603ad30f0460e7c89bbee79880416794b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.347/download"], + strip_prefix = "ra_ap_vfs-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__ra_ap_vfs-notify-0.0.347", + sha256 = "ede5e2c51dd3a138039d2f1c4dc33709cebb1c4e00692f8026de833844ad375f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.347/download"], + strip_prefix = "ra_ap_vfs-notify-0.0.347", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.347.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__rand-0.10.2", + sha256 = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rand/0.10.2/download"], + strip_prefix = "rand-0.10.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rand-0.10.2.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.2", + sha256 = "cf0e374215cd2db2b5c75d7b3a99cb0cc052c0595335dfdefc03d4eb08f4aa81", + type = "tar.gz", + urls = ["https://static.crates.io/crates/salsa/0.28.2/download"], + strip_prefix = "salsa-0.28.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-0.28.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__salsa-macro-rules-0.28.2", + sha256 = "85f4b7d4405540bbd6d4ffa52d4322d983f3781954d3073067ac1bdb028459b3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/salsa-macro-rules/0.28.2/download"], + strip_prefix = "salsa-macro-rules-0.28.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macro-rules-0.28.2.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__salsa-macros-0.28.2", + sha256 = "445be2bfbb2f67cb663225ecd7bc5a25370c0250fca30f9d8cbad9a913650370", + type = "tar.gz", + urls = ["https://static.crates.io/crates/salsa-macros/0.28.2/download"], + strip_prefix = "salsa-macros-0.28.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macros-0.28.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.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.22.0", + sha256 = "ee78f1fbe43ac4a0e47aadb3dbd357b69eb0d3793e948624cd03dd2750ab1c0a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde_with/3.22.0/download"], + strip_prefix = "serde_with-3.22.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with-3.22.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__serde_with_macros-3.22.0", + sha256 = "8705578779c2b6bd90d84d66eb2e206b708b1a4d7b9f17641b293545bf1c7e46", + type = "tar.gz", + urls = ["https://static.crates.io/crates/serde_with_macros/3.22.0/download"], + strip_prefix = "serde_with_macros-3.22.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_with_macros-3.22.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.15.2", + sha256 = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90", + type = "tar.gz", + urls = ["https://static.crates.io/crates/smallvec/1.15.2/download"], + strip_prefix = "smallvec-1.15.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.smallvec-1.15.2.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.3", + sha256 = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3", + type = "tar.gz", + urls = ["https://static.crates.io/crates/syn/3.0.3/download"], + strip_prefix = "syn-3.0.3", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.syn-3.0.3.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.2.0", + sha256 = "016ef9739649996fcc983b9c588fe3d557cf216d4d98503ce1b057ab5a66d689", + type = "tar.gz", + urls = ["https://static.crates.io/crates/temp-dir/0.2.0/download"], + strip_prefix = "temp-dir-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.temp-dir-0.2.0.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.12.0", + sha256 = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f", + type = "tar.gz", + urls = ["https://static.crates.io/crates/tinyvec/1.12.0/download"], + strip_prefix = "tinyvec-1.12.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.tinyvec-1.12.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-1.1.4-spec-1.1.0", + sha256 = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5", + type = "tar.gz", + urls = ["https://static.crates.io/crates/toml/1.1.4+spec-1.1.0/download"], + strip_prefix = "toml-1.1.4+spec-1.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.toml-1.1.4+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.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.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.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"), ) - 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.6", is_dev_dep = False), + struct(repo = "vendor_ts__dunce-1.0.5", is_dev_dep = False), + struct(repo = "vendor_ts__either-1.17.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.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.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.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_cfg-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_def-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_ide_db-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_intern-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_parser-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_paths-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_project_model-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_span-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_stdx-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_syntax-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_syntax-bridge-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_toolchain-0.0.347", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_vfs-0.0.347", 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.22.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.3", is_dev_dep = False), + struct(repo = "vendor_ts__toml-1.1.4-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.13.3", is_dev_dep = False), + struct(repo = "vendor_ts__rand-0.10.2", 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.17.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/either-1.17.0/BUILD.bazel new file mode 100644 index 000000000000..174861068ce7 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/either-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 = "either-1.17.0", + actual = "@vendor_ts__either-1.17.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..89cb4c273dd3 --- /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.17.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.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/lazy_static-1.5.0/BUILD.bazel new file mode 100644 index 000000000000..90bcdad60bd0 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/lazy_static-1.5.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 = "lazy_static-1.5.0", + actual = "@vendor_ts__lazy_static-1.5.0//: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..aa48e3ca0d71 --- /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.0//: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.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_base_db-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..6d34352f7624 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_base_db-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_base_db-0.0.347//: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..e4143c5deb6a --- /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.347//:ra_ap_base_db", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_cfg-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_cfg-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..174228dffde3 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_cfg-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_cfg-0.0.347//: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..d4b66cf510a1 --- /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.347//:ra_ap_cfg", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..557cfeb56135 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_hir-0.0.347//: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..31daac1890cc --- /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.347//:ra_ap_hir", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_def-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_def-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..1e06257bf196 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_def-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_hir_def-0.0.347//: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..724e057553f1 --- /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.347//:ra_ap_hir_def", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_expand-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_expand-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..4de2d355ce21 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_expand-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.347//: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..821261303300 --- /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.347//:ra_ap_hir_expand", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_ty-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_ty-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..78cb7773e47a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_hir_ty-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.347//: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..5b228755d2b5 --- /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.347//:ra_ap_hir_ty", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_ide_db-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_ide_db-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..f760fab13751 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_ide_db-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_ide_db-0.0.347//: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..b558c2a8098d --- /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.347//:ra_ap_ide_db", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_intern-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_intern-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..ea853396104a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_intern-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_intern-0.0.347//: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..8635a9422268 --- /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.347//:ra_ap_intern", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_load-cargo-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_load-cargo-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..00db68260ecc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_load-cargo-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.347//: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..1b89aab84736 --- /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.347//:ra_ap_load_cargo", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_parser-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_parser-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..ca368cb518f0 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_parser-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_parser-0.0.347//: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..4d00f8000d5b --- /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.347//:ra_ap_parser", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_paths-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_paths-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..92a64bf9c3ec --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_paths-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_paths-0.0.347//: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..8e89532640e3 --- /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.347//:ra_ap_paths", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_project_model-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_project_model-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..015ee1054ec9 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_project_model-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_project_model-0.0.347//: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..a7c77d60c859 --- /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.347//:ra_ap_project_model", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_span-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_span-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..386951ce749a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_span-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_span-0.0.347//: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..8c65ab706007 --- /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.347//:ra_ap_span", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_stdx-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_stdx-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..e3d1d6180e28 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_stdx-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_stdx-0.0.347//:ra_ap_stdx", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..f4560fbb8129 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_syntax-0.0.347//:ra_ap_syntax", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-bridge-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-bridge-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..40c10216994f --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_syntax-bridge-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_syntax-bridge-0.0.347//: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..087d7f5674b5 --- /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.347//: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..d50befd12920 --- /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.347//:ra_ap_syntax", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_toolchain-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_toolchain-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..0923d80069f3 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_toolchain-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_toolchain-0.0.347//: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..2a4de2c0fc8f --- /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.347//:ra_ap_toolchain", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_vfs-0.0.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_vfs-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..06f96600de4c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/ra_ap_vfs-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_vfs-0.0.347//: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..2c22c96ee4ff --- /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.347//:ra_ap_vfs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/rand-0.10.2/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/rand-0.10.2/BUILD.bazel new file mode 100644 index 000000000000..60178e6c9a2a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/rand-0.10.2/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.2", + actual = "@vendor_ts__rand-0.10.2//: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..5a83136d9d6e --- /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.2//: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.22.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_with-3.22.0/BUILD.bazel new file mode 100644 index 000000000000..d72d8ca8d74d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/serde_with-3.22.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.22.0", + actual = "@vendor_ts__serde_with-3.22.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..d135dc30d9ea --- /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.22.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.347/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/stdx-0.0.347/BUILD.bazel new file mode 100644 index 000000000000..9e425e140f0d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/stdx-0.0.347/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.347", + actual = "@vendor_ts__ra_ap_stdx-0.0.347//: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..d1c0b6a8d09b --- /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.347//:ra_ap_stdx", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/syn-3.0.3/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/syn-3.0.3/BUILD.bazel new file mode 100644 index 000000000000..59343842e751 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/syn-3.0.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 = "syn-3.0.3", + actual = "@vendor_ts__syn-3.0.3//: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..f468de53f06b --- /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.3//:syn", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/toml-1.1.4+spec-1.1.0/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/toml-1.1.4+spec-1.1.0/BUILD.bazel new file mode 100644 index 000000000000..73860e361843 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/toml-1.1.4+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.4+spec-1.1.0", + actual = "@vendor_ts__toml-1.1.4-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..d5f896d5eadd --- /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.4-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.13.3/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/zstd-0.13.3/BUILD.bazel new file mode 100644 index 000000000000..1aa948ae3df7 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/zstd-0.13.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 = "zstd-0.13.3", + actual = "@vendor_ts__zstd-0.13.3//: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..112a16efc53a --- /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.13.3//:zstd", + tags = ["manual"], +) diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index ba51f45be36f..1c27d6177555 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.58-dev 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/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/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..60d215e5bdf4 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.1.10" 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/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/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 715a4f61bfc8..ad9d7605202a 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.6-dev 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..1747b6cdd1a0 100644 --- a/python/ql/lib/semmle/python/controlflow/internal/AstNodeImpl.qll +++ b/python/ql/lib/semmle/python/controlflow/internal/AstNodeImpl.qll @@ -993,9 +993,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 +1753,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/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/qlpack.yml b/python/ql/src/qlpack.yml index d48bc1e8e7cc..70ce9eeef942 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.11-dev groups: - python - queries 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/ruby/extractor/Cargo.toml b/ruby/extractor/Cargo.toml index 09c67fd42f8d..db5cd433fe9d 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" +serde_json = "1.0.151" codeql-extractor = { path = "../../shared/tree-sitter-extractor" } diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 2c52daba2b15..f38a7120a31f 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.0.1-dev 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/qlpack.yml b/ruby/ql/src/qlpack.yml index a215aec72b83..d532c03248a0 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.11-dev groups: - ruby - queries diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 60d093c30021..121cacb2a5b2 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.97" profile = "minimal" components = [ "clippy", "rustfmt" ] diff --git a/rust/README.md b/rust/README.md index 4fdbb0aedbdd..b17c9ff12eee 100644 --- a/rust/README.md +++ b/rust/README.md @@ -84,6 +84,11 @@ installing [`cargo-edit`](https://crates.io/crates/cargo-edit) with `cargo insta 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, 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 @@ -100,6 +105,8 @@ installing [`cargo-edit`](https://crates.io/crates/cargo-edit) with `cargo insta 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. 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..257f6212dcf2 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.17.0" +stdx = {package = "ra_ap_stdx", version = "0.0.347"} +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/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/extractor/Cargo.toml b/rust/extractor/Cargo.toml index 60376b5b67e8..caca0cbb17a2 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.6", 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.347" +ra_ap_hir = "0.0.347" +ra_ap_hir_def = "0.0.347" +ra_ap_ide_db = "0.0.347" +ra_ap_hir_ty = "0.0.347" +ra_ap_hir_expand = "0.0.347" +ra_ap_load-cargo = "0.0.347" +ra_ap_paths = "0.0.347" +ra_ap_project_model = "0.0.347" +ra_ap_syntax = "0.0.347" +ra_ap_syntax-bridge = "0.0.347" +ra_ap_toolchain = "0.0.347" +ra_ap_vfs = "0.0.347" +ra_ap_parser = "0.0.347" +ra_ap_span = "0.0.347" +ra_ap_cfg = "0.0.347" +ra_ap_intern = "0.0.347" +serde = "1.0.229" +serde_with = "3.22.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.4" 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..fa0c441ed278 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.3", features = ["full"] } diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs index 9bf7487012df..71d57049b7ed 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 } diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list index a8177c3a85c3..35085d026e7b 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 161209a7b5416721864ad12d8e7f3230b8f458aedd18ae8a8bf4cef901c064fd 161209a7b5416721864ad12d8e7f3230b8f458aedd18ae8a8bf4cef901c064fd diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs index d639d751f166..f7917661050f 100644 --- a/rust/extractor/src/generated/top.rs +++ b/rust/extractor/src/generated/top.rs @@ -1039,8 +1039,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 +1050,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 +1090,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,6 +1262,56 @@ 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, @@ -1714,6 +1718,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, @@ -2523,6 +2581,7 @@ pub struct StructField { 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 +2603,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()]); } @@ -2839,6 +2901,7 @@ impl From> for trap::Label { pub struct TupleField { pub id: trap::TrapId, pub attrs: Vec>, + pub mut_restriction: Option>, pub type_repr: Option>, pub visibility: Option>, } @@ -2853,6 +2916,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 +3366,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 +3376,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 +3413,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, @@ -3592,6 +3708,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 +3718,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 +3890,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 +3904,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 +3957,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 +3970,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()]); + } } } @@ -5215,6 +5343,65 @@ 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 DynTraitTypeRepr { pub id: trap::TrapId, @@ -5814,6 +6001,61 @@ 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, @@ -6987,6 +7229,61 @@ 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, @@ -7592,6 +7889,69 @@ 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, @@ -10560,6 +10920,7 @@ pub struct Trait { pub assoc_item_list: Option>, 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 +10945,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()]); } 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..14a641bbee19 --- /dev/null +++ b/rust/extractor/src/toolchain.rs @@ -0,0 +1,71 @@ +//! 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 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.97.0"; + +/// 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. +/// +/// When the project is using `nightly`, anything below is almost certain to not +/// work. In that case using the specified nightly toolchain may work if the +/// toolchain is compatible with our rust-analyzer version. +pub fn select_toolchain() -> String { + let nightly = project_toolchain() + .ok() + .filter(|output| output.status.success()) + .and_then(|output| String::from_utf8(output.stdout).ok()) + .and_then(|toolchain| toolchain.split_whitespace().next().map(str::to_owned)) + .filter(|toolchain| toolchain.starts_with("nightly")); + nightly.unwrap_or_else(|| FIXED_RUST_TOOLCHAIN.to_owned()) +} + +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}"), + } +} diff --git a/rust/extractor/src/translate.rs b/rust/extractor/src/translate.rs index 1e9f3775d40e..586d46ee27e2 100644 --- a/rust/extractor/src/translate.rs +++ b/rust/extractor/src/translate.rs @@ -1,4 +1,5 @@ mod base; +mod format_args; mod generated; mod mappings; diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index 68c3691fd24c..d25ca31e6de3 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -1,3 +1,4 @@ +use super::format_args; use super::mappings::Emission; use crate::generated::{self}; use crate::rust_analyzer::FileSemanticInformation; @@ -5,7 +6,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 +21,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 +124,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 +145,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 +294,7 @@ impl<'a> Translator<'a> { dispatch_to_tracing!( severity, "{}:{}:{}: {}", - self.path, + self.path.display(), start.line + 1, start.col + 1, &full_message, @@ -372,7 +373,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 +382,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(); @@ -461,6 +461,9 @@ impl<'a> Translator<'a> { )); } } else if self.semantics.is_some() { + if self.reconstruct_format_args_expansion(mcall, label) { + return; + } // let's not spam warnings if we don't have semantics, we already emitted one let range = self.text_range_for_node(mcall); self.emit_parse_error( @@ -515,11 +518,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 +756,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, ); @@ -784,6 +785,67 @@ impl<'a> Translator<'a> { result } + /// Reconstructs and emits the expansion of a format-family macro (`format!`, + /// `println!`, `write!`, `panic!`, ...). + /// + /// On `rustc <1.94` sysroots these macros no longer resolve, so `expand_macro_call` + /// returns `None` and we get a bare unexpanded `MacroCall` with no flow through it. + /// We rebuild the token tree of the real expansion ourselves (see + /// [`super::format_args`]), parse it, and register the result as the macro + /// expansion. Locations of the synthesized nodes are routed through the expansion + /// span map via `builtin_derive_span_map`. + /// + /// Returns `true` when the macro was recognized and an expansion was emitted. + fn reconstruct_format_args_expansion( + &mut self, + mcall: &ast::MacroCall, + label: Label, + ) -> bool { + self.try_reconstruct_format_args_expansion(mcall, label) + .is_some() + } + + /// Attempts to reconstruct and emit a format-family macro expansion. + fn try_reconstruct_format_args_expansion( + &mut self, + mcall: &ast::MacroCall, + label: Label, + ) -> Option<()> { + let name = mcall.path()?.segment()?.name_ref()?.text().to_string(); + let wrap = format_args::Wrap::for_macro(&name)?; + let tt_node = mcall.token_tree()?; + let semantics = self.semantics?; + let db = semantics.db; + let file_id = semantics.hir_file_for(mcall.syntax()); + let span_map = file_id.span_map(db); + let call_site = span_map.span_for_range(mcall.syntax().text_range()); + let input = syntax_node_to_token_tree( + tt_node.syntax(), + span_map, + call_site, + DocCommentDesugarMode::ProcMacro, + ); + let output = format_args::reconstruct(wrap, &input, call_site)?; + + let edition = self.file_id.map(|f| f.edition(db))?; + let (parsed, output_span_map) = + token_tree_to_syntax_node(&output, TopEntryPoint::Expr, &mut |_| edition); + let root = parsed.syntax_node(); + let expr = ast::Expr::cast(root.clone()) + .or_else(|| root.descendants().find_map(ast::Expr::cast))?; + // Sanity check: the parsed expression must contain the reconstructed + // `FormatArgsExpr` (either directly, or wrapped in the callee above). + expr.syntax() + .descendants() + .find_map(ast::FormatArgsExpr::cast)?; + let previous = self.builtin_derive_span_map.replace(output_span_map); + let emitted = self.emit_expr(&expr); + self.builtin_derive_span_map = previous; + let value = emitted?; + generated::MacroCall::emit_macro_call_expansion(label, value.into(), &mut self.trap.writer); + Some(()) + } + pub(crate) fn emit_derive_expansion( &mut self, node: &(impl Into + Clone), diff --git a/rust/extractor/src/translate/format_args.rs b/rust/extractor/src/translate/format_args.rs new file mode 100644 index 000000000000..c6ac1b9b8d0d --- /dev/null +++ b/rust/extractor/src/translate/format_args.rs @@ -0,0 +1,163 @@ +//! Reconstruction of the `format_args!` expansion of the format-family macros. +//! +//! On `rustc <1.94` sysroots the format-family macros (`format!`, `println!`, +//! `write!`, `panic!`, ...) no longer resolve, so `expand_macro_call` returns `None` +//! and we get a bare unexpanded `MacroCall`. The syntactic lowering of these macros +//! is a pure, sysroot-independent transform, so we rebuild the same token tree the +//! real (>=1.94) expansion produces and parse it ourselves, giving pre-1.94 +//! toolchains the same AST as newer ones. +//! +//! This module owns the pure token-tree construction; [`super::base::Translator`] +//! handles parsing the result and emitting it as the macro expansion. + +use ra_ap_hir_expand::intern::Symbol; +use ra_ap_hir_expand::tt; +use ra_ap_span::Span; + +/// How a format-family macro wraps its `format_args!`. We rebuild the same shape the +/// real (>=1.94) expansion has, so older toolchains get the same AST. +#[derive(Clone, Copy, PartialEq, Eq)] +pub(crate) enum Wrap { + /// `format_args!` and friends are themselves the `FormatArgsExpr`. + Bare, + /// Wrapped in a call to the given absolute path, e.g. `std::fmt::format(..)`. + Call(&'static [&'static str]), + /// `write!`/`writeln!`: `.write_fmt(format_args!(..))`. + WriteMethod, +} + +impl Wrap { + /// Classifies a macro by its name, or returns `None` if it is not a + /// format-family macro we reconstruct. + /// + /// `format_args_nl!`'s trailing newline is intentionally dropped: it is not + /// relevant to flow or to the sinks keyed on the callee, so all variants map to + /// the same `format_args` reconstruction. + pub(crate) fn for_macro(name: &str) -> Option { + Some(match name { + "format_args" | "const_format_args" | "format_args_nl" => Wrap::Bare, + "format" => Wrap::Call(&["std", "fmt", "format"]), + "print" | "println" => Wrap::Call(&["std", "io", "_print"]), + "eprint" | "eprintln" => Wrap::Call(&["std", "io", "_eprint"]), + "panic" => Wrap::Call(&["core", "panicking", "panic_fmt"]), + "write" | "writeln" => Wrap::WriteMethod, + _ => return None, + }) + } +} + +/// Builds the reconstructed expansion token tree for `wrap` from the macro `input`. +/// +/// Returns `None` if the input does not match the expected shape (currently only when +/// a `write!` argument list has no writer/format-args separating comma). `call_site` +/// is used to span the synthesized tokens; the format arguments keep their own spans. +pub(crate) fn reconstruct( + wrap: Wrap, + input: &tt::TopSubtree, + call_site: Span, +) -> Option { + let emitter = Emitter { + call_site, + format_args_parens: input.view().top_subtree().delimiter, + }; + + let mut builder = tt::TopSubtreeBuilder::new(tt::Delimiter::invisible_spanned(call_site)); + match wrap { + Wrap::Bare => emitter.push_format_args(&mut builder, input.view().token_trees()), + Wrap::Call(path) => { + emitter.push_path(&mut builder, path); + emitter.push_parenthesized_format_args(&mut builder, input.view().token_trees()); + } + Wrap::WriteMethod => { + let (writer, content) = split_arguments(input)?; + builder.extend_with_tt(writer); + builder.push(emitter.punct('.', tt::Spacing::Alone)); + builder.push(emitter.ident("write_fmt")); + emitter.push_parenthesized_format_args(&mut builder, content); + } + } + Some(builder.build()) +} + +/// Splits the macro argument list into the leading writer (for `write!`/`writeln!`, +/// everything up to the first top-level comma) and the format arguments. +fn split_arguments<'a>( + input: &'a tt::TopSubtree, +) -> Option<(tt::TokenTreesView<'a>, tt::TokenTreesView<'a>)> { + let mut iter = input.view().iter(); + let start = iter.savepoint(); + let mut found_comma = false; + while let Some(element) = iter.peek() { + if let tt::TtElement::Leaf(tt::Leaf::Punct(punct)) = element + && punct.char == ',' + { + found_comma = true; + break; + } + iter.next(); + } + if !found_comma { + return None; + } + let writer = iter.from_savepoint(start); + iter.next(); // consume the comma + Some((writer, iter.remaining())) +} + +/// Emits the synthesized tokens, tagging them with the macro call site span. +struct Emitter { + call_site: Span, + /// The delimiter of the macro input, reused for the `format_args(..)` parentheses + /// so those spans point back at the original argument list. + format_args_parens: tt::Delimiter, +} + +impl Emitter { + fn ident(&self, sym: &str) -> tt::Leaf { + tt::Leaf::Ident(tt::Ident { + sym: Symbol::intern(sym), + span: self.call_site, + is_raw: tt::IdentIsRaw::No, + }) + } + + fn punct(&self, char: char, spacing: tt::Spacing) -> tt::Leaf { + tt::Leaf::Punct(tt::Punct { + char, + spacing, + span: self.call_site, + }) + } + + /// Pushes `builtin # format_args ( )`, the token form the parser turns + /// into a `FormatArgsExpr`. Its argument leaves keep their real source spans. + fn push_format_args(&self, builder: &mut tt::TopSubtreeBuilder, content: tt::TokenTreesView) { + builder.push(self.ident("builtin")); + builder.push(self.punct('#', tt::Spacing::Alone)); + builder.push(self.ident("format_args")); + builder.open(tt::DelimiterKind::Parenthesis, self.format_args_parens.open); + builder.extend_with_tt(content); + builder.close(self.format_args_parens.close); + } + + /// Pushes `:: seg :: seg ...`, an absolute path. + fn push_path(&self, builder: &mut tt::TopSubtreeBuilder, path: &[&str]) { + for segment in path { + builder.push(self.punct(':', tt::Spacing::Joint)); + builder.push(self.punct(':', tt::Spacing::Alone)); + builder.push(self.ident(segment)); + } + } + + /// Pushes `( builtin#format_args() )`, the argument list of the wrapping + /// call or method. + fn push_parenthesized_format_args( + &self, + builder: &mut tt::TopSubtreeBuilder, + content: tt::TokenTreesView, + ) { + builder.open(tt::DelimiterKind::Parenthesis, self.call_site); + self.push_format_args(builder, content); + builder.close(self.call_site); + } +} diff --git a/rust/extractor/src/translate/generated.rs b/rust/extractor/src/translate/generated.rs index fe524b75e9d1..f620af0e7cde 100644 --- a/rust/extractor/src/translate/generated.rs +++ b/rust/extractor/src/translate/generated.rs @@ -82,6 +82,9 @@ impl Translator<'_> { 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), @@ -180,9 +183,11 @@ impl Translator<'_> { let label = match node { ast::Pat::BoxPat(inner) => self.emit_box_pat(inner).map(Into::into), ast::Pat::ConstBlockPat(inner) => self.emit_const_block_pat(inner).map(Into::into), + 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 +222,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), @@ -322,9 +328,14 @@ 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().filter_map(|x| self.emit_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) @@ -408,11 +419,16 @@ 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().filter_map(|x| self.emit_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 +452,18 @@ 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().filter_map(|x| self.emit_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()); @@ -916,6 +937,19 @@ 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_dyn_trait_type( &mut self, node: &ast::DynTraitType, @@ -1190,30 +1224,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, @@ -1347,6 +1368,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 +1398,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, @@ -1849,6 +1896,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 +1947,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, @@ -2112,6 +2185,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, @@ -2258,6 +2346,9 @@ impl Translator<'_> { let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let default_val = node.default_val().and_then(|x| self.emit_const_arg(&x)); let is_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 +2357,7 @@ impl Translator<'_> { attrs, default_val, is_unsafe, + mut_restriction, name, type_repr, visibility, @@ -2654,6 +2746,9 @@ impl Translator<'_> { 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 +2762,7 @@ impl Translator<'_> { assoc_item_list, attrs, generic_param_list, + impl_restriction, is_auto, is_unsafe, name, @@ -2737,11 +2833,15 @@ impl Translator<'_> { return None; } let attrs = node.attrs().filter_map(|x| self.emit_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, }); @@ -3094,8 +3194,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, }); diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 4e2371c73bed..ebbf91a4f16a 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -1,4 +1,4 @@ -lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 6856901e16b8e54da81700c78abf93268801e77dbca5d3f2d3c63f7e1eeef088 8e4cbe943860b173a519a7b797d9a6af0d3cdcc0514d9e003720a71b51d8cb8c +lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 857dacbebd4fdb6415a9a246bdde13cba90b17e9c157c5c9a2a88b71d4739fa9 31f81e4432c9a494d44e93694da81305e05c9b9d7a7284b7c9b159d32debf47a lib/codeql/rust/elements/Abi.qll 485a2e79f6f7bfd1c02a6e795a71e62dede3c3e150149d5f8f18b761253b7208 6159ba175e7ead0dd2e3f2788f49516c306ee11b1a443bd4bdc00b7017d559bd lib/codeql/rust/elements/Addressable.qll 13011bfd2e1556694c3d440cc34af8527da4df49ad92b62f2939d3699ff2cea5 ddb25935f7553a1a384b1abe2e4b4fa90ab50b952dadec32fd867afcb054f4be lib/codeql/rust/elements/ArgList.qll 3d2f6f5542340b80a4c6e944ac17aba0d00727588bb66e501453ac0f80c82f83 afd52700bf5a337f19827846667cd0fb1fea5abbbcbc353828e292a727ea58c9 @@ -6,16 +6,16 @@ lib/codeql/rust/elements/ArrayExpr.qll e4e7cff3518c50ec908271906dd46c1fbe9098faa 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 771637b0b61df0d55c3746b74c8c4f36a02f505d6765246c3bbfebffacdbfa2e ab7d8b0bcf95a40bbe6b7f5fef08b37ba773d3f5aa4b07390a2918d9d37dfa57 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/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 eba3d7b64b9f66075cd0b80bafd57308d3c3b2279883df8caf629eeb05733e3b c69c877e1be60a483ef7c8fe427e19b6320512737ba2a54073b0dc9ef7c578cd lib/codeql/rust/elements/AsmOption.qll 7ad333a4bb152dbf7c1df0d90424ff20031841822e49b26cc615230b1c186581 9c2a087ea7f7c386eff170337f0c29568dea3d49a570b35207652b08e24a9355 -lib/codeql/rust/elements/AsmOptionsList.qll 3dd55a8b15ada811c9225b0fe9b733eabf22313e7bd1ae6a99fdcb9a6facea07 32d996dde8802e4a2afd8c3624f055cb4e4c18591dc236f3b5bf0c0d4e57f822 +lib/codeql/rust/elements/AsmOptionsList.qll a57cd6061019ff7e5380d0aea1806f74b78dadf02f650560ad4abbfcb5a6d0b1 aef54eb8846b78a448858a92bef70e04626d587737e096772362a4b5fcdc6711 lib/codeql/rust/elements/AsmPiece.qll 8650bf07246fac95533876db66178e4b30ed3210de9487b25acd2da2d145416a 42155a47d5d5e6ea2833127e78059fa81126a602e178084957c7d9ff88c1a9a3 lib/codeql/rust/elements/AsmRegOperand.qll 27abfffe1fc99e243d9b915f9a9694510133e5f72100ec0df53796d27a45de0c 8919ab83081dae2970adb6033340c6a18751ffd6a8157cf8c55916ac4253c791 lib/codeql/rust/elements/AsmRegSpec.qll 77483fc3d1de8761564e2f7b57ecf1300d67de50b66c11144bb4e3e0059ebfd6 521f8dd0af859b7eef6ab2edab2f422c9ff65aa11bad065cfba2ec082e0c786b @@ -47,6 +47,7 @@ lib/codeql/rust/elements/ConstBlockPat.qll a25f42b84dbeb33e10955735ef53b8bb7e325 lib/codeql/rust/elements/ConstParam.qll 87776586f7ff562ff3c71373f45cf70486f9a832613a0aaac943311c451cc057 67a31616688106d5130951f2162e5229bff0fde08ff647943663cac427d7048b lib/codeql/rust/elements/ContinueExpr.qll 9f27c5d5c819ad0ebc5bd10967ba8d33a9dc95b9aae278fcfb1fcf9216bda79c 0dc061445a6b89854fdce92aaf022fdc76b724511a50bb777496ce75c9ecb262 lib/codeql/rust/elements/Crate.qll 1426960e6f36195e42ea5ea321405c1a72fccd40cd6c0a33673c321c20302d8d 1571a89f89dab43c5291b71386de7aadf52730755ba10f9d696db9ad2f760aff +lib/codeql/rust/elements/DerefPat.qll 0ec42df5cf3b08931a0fab900e9a2196fa3a1a742c15b9af743fd952cdca2fe9 3022254ed99abde37ecf0a1678b12534740b58f1bb1b68c6e823fcaa57fde579 lib/codeql/rust/elements/DynTraitTypeRepr.qll e4d27112d27ae93c621defd2c976fd4e90663ab7f6115e83ae4fe8106cb5e015 eb9fde89698588f3b7116f62388c54e937f99559b22c93d11a5596e754560072 lib/codeql/rust/elements/Element.qll 0b62d139fef54ed2cf2e2334806aa9bfbc036c9c2085d558f15a42cc3fa84c48 24b999b93df79383ef27ede46e38da752868c88a07fe35fcff5d526684ba7294 lib/codeql/rust/elements/Enum.qll 13c1a3bddfff6c9cc644902652883aefc7721bc94bd8084a1a49acc156996d12 17a898434329437479de4fef27ce11f5996b1953168066bd6d51f93594cc79d1 @@ -63,8 +64,7 @@ lib/codeql/rust/elements/ForBinder.qll ee29b55cb4c1fa5180cc4ee1236ac089fe9f67ffa lib/codeql/rust/elements/ForExpr.qll a050f60cf6fcc3ce66f5042be1b8096e5207fe2674d7477f9e299091ca99a4bd d7198495139649778894e930163add2d16b5588dd12bd6e094a9aec6863cb16f 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/FormatArgsArg.qll a2c23cd512d44dd60b7d65eba52cc3adf6e2fbbcd0588be375daa16002cd7741 d9c5fe183fb228375223d83f857b7a9ee686f1d3e341bcf323d7c6f39652f88b lib/codeql/rust/elements/FormatArgsExpr.qll 8127cbe4082f7acc3d8a05298c2c9bea302519b8a6cd2d158a83c516d18fc487 88cf9b3bedd69a1150968f9a465c904bbb6805da0e0b90cfd1fc0dab1f6d9319 lib/codeql/rust/elements/FormatArgument.qll f6fe17ee1481c353dd42edae8b5fa79aeb99dff25b4842ec9a6f267b1837d1e3 5aed19c2daf2383b89ad7fd527375641cff26ddee7afddb89bc0d18d520f4034 lib/codeql/rust/elements/FormatTemplateVariableAccess.qll ff3218a1dda30c232d0ecd9d1c60bbb9f3973456ef0bee1d1a12ad14b1e082b5 e4316291c939800d8b34d477d92be9404a30d52b7eee37302aef3d3205cf4ae0 @@ -76,7 +76,9 @@ lib/codeql/rust/elements/GenericParamList.qll 25fcaa68bc7798d75974d12607fae0afc7 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/ImplRestriction.qll 2282977f216bf14779fc160c3faa6d261aa2892450701c7b4312e5085240eaeb f242f91243475380de834d8780355ab0bf582a9aa1e9f882ddbedb87559345cf lib/codeql/rust/elements/ImplTraitTypeRepr.qll 1d559b16c659f447a1bde94cc656718f20f133f767060437b755ac81eea9f852 de69c596701f0af4db28c5802d092a39c88a90bf42ea85aea25eecb79417e454 +lib/codeql/rust/elements/IncludeBytesExpr.qll c2bf15235d5a380a0e5dce98cc81b3189f093a5a8f9a218751a475e8275ad4cb acc4ccfb8afc033f0bf48914f5f9066f74400d6b3545575f6a7c73d7f74feeaf lib/codeql/rust/elements/IndexExpr.qll 0e2e9f018d06ae72be0fc4ddbc019a9aacd8a06f42b4c4431760bd149e7f2290 2bcfd557abd53a48e48de7915c4f2089107c62dfb3e732a904848248dfd3727b lib/codeql/rust/elements/InferTypeRepr.qll 1b8bdcb574a7b6e7dd49f4cfb96655a6ccc355744b424b8c2593fe8218090d53 c20a2a5b0346dc277721deb450e732a47812c8e872ffb60aaba351b1708e9477 lib/codeql/rust/elements/Item.qll 59d2ac7b5b111579951bf42f68834ecf6dab47a5fb342ed0841c905b977923ab 0d220ec12a373098b26e6cb3a7b327b2d0c1882c3d9b6de00f4df1e8d00bae68 @@ -110,9 +112,11 @@ lib/codeql/rust/elements/Meta.qll e54802dadd2f1b914a821f9e9335f6088d4782751e36c0 lib/codeql/rust/elements/MethodCallExpr.qll 914633f304c587addced988a7f161a1a4b3297ce370f6a959b7a042b1c04dace 289a0854d6323df915ee5f268523ee597ba20a37c646bbb2a79c9ed1f7aa2260 lib/codeql/rust/elements/Missing.qll 70e6ac9790314752849c9888443c98223ccfc93a193998b7ce350b2c6ebe8ea4 e2f0623511acaa76b091f748d417714137a8b94f1f2bdbbd177f1c682c786dad lib/codeql/rust/elements/Module.qll 0bc85019177709256f8078d9de2a36f62f848d476225bff7bba1e35f249875c7 3fbb70e0c417a644dd0cada2c364c6e6876cfa16f37960e219c87e49c966c94e +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/NotNull.qll f1aaa23ac86ff3418b61ebf2c69ee30c0351c725be241f38de8b9e0a42b2c1dc 40f29691234c3722183744c5336e0645b9005388284a605458e19aeeed99877b lib/codeql/rust/elements/OffsetOfExpr.qll 370734a01c72364c9d6a904597190dac99dc1262631229732c8687fd1b3e2aa0 e222d2688aa18ed6eec04f2f6ac1537f5c7467d2cef878122e8fc158d4f6f99e lib/codeql/rust/elements/OrPat.qll 408b71f51edbfc79bf93b86fb058d01fa79caf2ebfeef37b50ae1da886c71b68 4a3f2b00db33fe26ee0859e35261016312cb491e23c46746cdd6d8bb1f6c88ef lib/codeql/rust/elements/Param.qll d0c0a427c003bbbacaeb0c2f4566f35b997ad0bca4d49f97b50c3a4bd1ddbd71 e654a17dfcb7aaeb589e7944c38f591c4cf922ebceb834071bcb9f9165ee48be @@ -131,6 +135,7 @@ lib/codeql/rust/elements/PathMeta.qll 56021df592b69c9c735db2ebe2b14ee5b5e0a76546 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/PatternTypeRepr.qll 719a26a7b7e40bf6d336a68e93a5a84efb9a87341d96472ba9599555aa7a92a0 3f1d6f860466463dcfe09fb233c9ba4319b3ccb0d45097bd0280c9ceb4f2dbfe lib/codeql/rust/elements/PrefixExpr.qll 107e7bd111b637fd6d76026062d54c2780760b965f172ef119c50dd0714a377d 46954a9404e561c51682395729daac3bda5442113f29839d043e9605d63f7f6d lib/codeql/rust/elements/PtrTypeRepr.qll 91a3816030ee8e8aae19759589b1b212a09e931b2858a0fef5a3a23f1fb5e342 db7371e63d9cb8b394c5438f4e8c80c1149ca45335ce3a46e6d564ed0cf3938a lib/codeql/rust/elements/RangeExpr.qll 43785bea08a6a537010db1138e68ae92eed7e481744188dfb3bad119425ff740 5e81cfbdf4617372a73d662a248a0b380c1f40988a5daefb7f00057cae10d3d4 @@ -154,7 +159,7 @@ lib/codeql/rust/elements/Struct.qll e60a859c0112b7a7ce4a4752e936e0d58f413ceb895d 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/StructField.qll 4cd16bbba2310fa2c4c489550fa3e876d87585be3aeba9ed2fe8f4a4d6402b8f ec76956b63b4d49bbde04327c53650efa99c7286427bf8e092df7cc99fdfea60 lib/codeql/rust/elements/StructFieldList.qll ee3cf510d35fad0edfeec68315fbe986a6d5323fbaddcfb688682be9a6508352 8cafe522251f98eb10eb45073e434a814165c25e436850f81b1d73ef88d6ae83 lib/codeql/rust/elements/StructPat.qll cdd1e8417d1c8cb3d14356390d71eb2916a295d95f240f48d4c2fb21bf4398cb 69c3456a13ef3e978a9a145b9e232198a30360f771feb41a917e507410611f6c lib/codeql/rust/elements/StructPatField.qll 856aa7d7c6d9b3c17514cbd12a36164e6e9d5923245770d0af3afb759a15204a 1bd1a294d84ad5e4da24e03b4882b215c50473875014859dbf26555d1f4ec2d5 @@ -162,11 +167,11 @@ lib/codeql/rust/elements/StructPatFieldList.qll 44619afedcda047e51ee3e319f738d5c 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 967281589090f414aafb9087a0a00e0906a9b42b9861044dcd5107e22f3b8e7d 1f892d3974b8fd7715efb1d565a6bff2a36c8f72e765609361fc6bfcd1437ad1 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/TupleField.qll 649e7025e4ba15e0189e764ae5253e68083432adf8e1b763e0739d3b4f79ae71 7522cd5a4efe5526d2be6cfeb99461fbce88c64041c6000e00a239797778f7d4 lib/codeql/rust/elements/TupleFieldList.qll 2fa47599f78aa4639a40239cf49bc2f97d84118125b949c71fec4390589caaf0 3f71a86e38bdc6fe9f0c082a43d763c4f34b4bdab99c383cdc5d8b59e887cee0 lib/codeql/rust/elements/TuplePat.qll 028cdea43868b0fdd2fc4c31ff25b6bbb40813e8aaccf72186051a280db7632e 38c56187971671e6a9dd0c6ccccb2ee4470aa82852110c6b89884496eb4abc64 lib/codeql/rust/elements/TupleStructPat.qll da398a23eb616bf7dd586b2a87f4ab00f28623418f081cd7b1cc3de497ef1819 6573bf3f8501c30af3aeb23d96db9f5bea7ab73e2b7ef3473095c03e96c20a5c @@ -190,7 +195,8 @@ lib/codeql/rust/elements/UseTree.qll e67c148f63668319c37914a46ff600692de477242a0 lib/codeql/rust/elements/UseTreeList.qll 92ebfee4392a485b38fb3265fdede7c8f2ed1dbe2ab860aa61b1497c33874d25 a4e677455d20838e422e430eebd73d0a488e34e8c960f375fef7b99e79d4c911 lib/codeql/rust/elements/Variant.qll affe9c58021358fd93d9c867277b4853c8303caa75521c657c8ba2e0cd45f0d6 44894859e3dde36b727abe8a28198f1ba7c487af839e6d9a2fe2d1bacb59f477 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 @@ -198,46 +204,27 @@ lib/codeql/rust/elements/WildcardPat.qll 4f941afc5f9f8d319719312399a8f787c75a0db lib/codeql/rust/elements/YeetExpr.qll 4172bf70de31cab17639da6eed4a12a7afcefd7aa9182216c3811c822d3d6b17 88223aab1bef696f508e0605615d6b83e1eaef755314e6a651ae977edd3757c3 lib/codeql/rust/elements/YieldExpr.qll de2dc096a077f6c57bba9d1c2b2dcdbecce501333753b866d77c3ffbe06aa516 1f3e8949689c09ed356ff4777394fe39f2ed2b1e6c381fd391790da4f5d5c76a lib/codeql/rust/elements/internal/AbiConstructor.qll 4484538db49d7c1d31c139f0f21879fceb48d00416e24499a1d4b1337b4141ac 460818e397f2a1a8f2e5466d9551698b0e569d4640fcb87de6c4268a519b3da1 -lib/codeql/rust/elements/internal/AbiImpl.qll 28a2b6bdb38fd626e5d7d1ed29b839b95976c3a03717d840669eb17c4d6f0c7a 8e83877855abe760f3be8f45c2cf91c1f6e810ec0301313910b8104b2474d9cf 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/ArrayExprInternalConstructor.qll f9756bc40beee99c5e4355bf157030b440c532dff5bdf43e848b3aa1a00fea90 39467f7f313e6f9ede1fe92375ee408098dc65291ca8ee50e36a3684a2767836 -lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll ae4488846c8309b2d4a51d54b36fce0a75107917c0b1f8af5ccf40797f570580 37838c7d6a04b95a16ed46e963d7e56def7a30b5e5ef1ab7e0dfdb5f256fa874 lib/codeql/rust/elements/internal/ArrayTypeReprConstructor.qll 52fea288f2031ae4fd5e5fe62300311134ed1dec29e372500487bf2c294516c1 fa6484f548aa0b85867813166f4b6699517dda9906e42d361f5e8c6486bdcb81 -lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll c00e03cc7136383bde1d830a8760e0e8665ed49692023ad27ad1e9c8eeb27c48 52cbc8e247f346f4b99855d653b8845b162300ecdab22db0578e7dec969768d0 lib/codeql/rust/elements/internal/AsmClobberAbiConstructor.qll 8bc39bd50f46b7c51b0cf2700d434d19d779ed6660e67e6dcec086e5a137ae3e 4e7425194565bea7a0fdc06e98338ebaeef4810d1e87245cdc55274534f1a592 -lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll aa6be2677bec6fa83ec3e29ee2aa53a0214a50de9a620a52ebdc6b94aaf38736 128937b710b5321788fe9675e0d364da09fd771c9ebc34b3de106496ef43396c lib/codeql/rust/elements/internal/AsmConstConstructor.qll 810cb616b04b3e70beb0e21f9ead43238d666ab21982ad513fc30c3357c85758 ad864bec16d3295b86c8aef3dc7170b58ef307a8d4d8b1bc1e91373021d6ae10 -lib/codeql/rust/elements/internal/AsmConstImpl.qll 775e6cc5df01462b649925a4bdd8f8d5481ec1d84e1c764d8eaf94e9e032822c 810c069fad76d4441c556dc72544cb4cac84169ae749e0686d88985acfc9acd9 lib/codeql/rust/elements/internal/AsmDirSpecConstructor.qll 91514d37fc4f274015606cc61e3137be71b06a8f5c09e3211affb1a7bd6d95b2 866ba3f8077e59b94ae07d38a9152081fc11122e18aa89cdd0c0acd9c846ed87 -lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll ba95497c1c83ee9193adbdd619efe60c8178123ead1eef8e07e1b686af1106fb c0c99a40187cd2bb12bef97fc312ca69c742c965ea130da842eb75d91ecfb0d8 lib/codeql/rust/elements/internal/AsmExprConstructor.qll 36c68023b58beec30af9f05d9d902a4c49faa0206b5528d6aad494a91da07941 4d91b7d30def03e634b92c0d7b99b47c3aadd75f4499f425b80355bc775ea5b6 -lib/codeql/rust/elements/internal/AsmExprImpl.qll a5eec51c3a01e89456283a3054a40527b819a3f4c28405e1e38b09adae922581 ba53e4bdbe9e13d658dd78765c6ea7db3bb0f60536c24751bcb9108f07134401 lib/codeql/rust/elements/internal/AsmLabelConstructor.qll e5f04525befc30136b656b020ade440c8b987ec787ff9c3feec77c1660f2556d cb9394581e39656bbe50cf8cc882c1b4b5534d7d0d59cef5c716d1c716a8a4f6 -lib/codeql/rust/elements/internal/AsmLabelImpl.qll cc1cc4be2f804915731acadb438ee755d330d3557a5d029aff1b208f2b5a7d19 298b8e2974f5c01e9f6bab5c485ce7e149a1392343bfc7c03a536c4bd41c0e7c lib/codeql/rust/elements/internal/AsmOperandExprConstructor.qll a7a724033717fe6c7aefb344bc21278baa690408135958d51fe01106e3df6f69 72212bf8792f5b8483a3567aab86fad70a45d9d33e85d81c275f96b2b10c87d1 -lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll d97b9ab3740c68b17b716d672371958dcbca396b2fed670d407732e13989fbec f34b43f3f8b70da9470216cc6f535b928291780edebce69e208b7a9fb662b0f4 lib/codeql/rust/elements/internal/AsmOperandImpl.qll acd1eb6467d7b1904e2f35b5abe9aa4431b9382c68da68ea9a90938c8277e2f0 ab21f5a8d57da0698b8fbfee6d569c95671ea48d433e64337e69452523cec9c3 lib/codeql/rust/elements/internal/AsmOperandNamedConstructor.qll 321fdd145a3449c7a93e6b16bb2d6e35a7d8c8aa63a325aa121d62309509ae58 08386b0e35c5e24918732f450a65f3b217601dc07123396df618ac46b9e94d7d -lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll a50add359936b7efa3411163e6d51ee3e4083dd05f65cefb63a7648bbf251202 9c7d9515d9adcc4652aea864dfd5273f1260539b41b4d201778e0374988553cb lib/codeql/rust/elements/internal/AsmOptionConstructor.qll 4dc373d005a09bf4baba7205a5fe536dae9fcd39c5a761796a04bf026862e0c2 3e4d8f38344c1a246bce6e4f1df1fc47e928b7a528b6a82683259f7bc190ed13 -lib/codeql/rust/elements/internal/AsmOptionImpl.qll 41199586e1ef9127f07673b46293816a483774e997c5b2e44cf5579ce3aad765 3ee04fd2d070a581afe15822da768f1e4c1e3f1a3645f01e1b99717d9dce93ec lib/codeql/rust/elements/internal/AsmOptionsListConstructor.qll 45e78f45fb65c1ae98f16e5c4d8129b91cf079b6793c5241981fab881b6a28a7 1fc496b87693e779e5185741461d5de7061699d7d94d15c8a6edec4fb0c5ccc7 -lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll 078ad57aaa0741ad256d6f7102ad226979766b4991fc3c96b12b556732c17f6b c70814bae7ef4c5e3e6f05f7a512d4e2cd559922616f0c0e6fc68127b21a1089 lib/codeql/rust/elements/internal/AsmPieceImpl.qll 1e501905bbf11c5a3cc4327af6b4a48ce157258d29c5936269e406d9e0fe21d4 54b91047f72c03ebbd84cf1826b7bfc556620a161edf3085d0a4faef8e60f63e lib/codeql/rust/elements/internal/AsmRegOperandConstructor.qll 5299b8134fdf2034c4d82a13a1f5ba7d90ffeae18ecd1d59aa43fd3dbf7ab92b d135f5e4a2d9da6917fb3b8277be9fcd68bcb1e3a76e4b2e70eb0b969b391402 -lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll 0999a4b492e6508dd74de56ed3a40d0e16959877efc060a516a404336ec605a3 70ca08941d76ebac530ee98894aa721877147b21c447d4e93c3aef92222bb1ca lib/codeql/rust/elements/internal/AsmRegSpecConstructor.qll bf3e0783645622691183e2f0df50144710a3198159c030e350b87f7c1bb0c86f 66f7c92260038785f9010c0914e69589bb5ff64fb14c2fb2c786851ca3c52866 -lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll 7ad0a5b86922e321da9f8c7ea8aefa88068b27bcea3890f981b061a204ab576d 65f13c423ef42209bd514523f21dd1e43cc4f5c191bdb85ba7128c76241f78a8 lib/codeql/rust/elements/internal/AsmSymConstructor.qll 9c7e8471081b9173f01592d4b9d22584a0d1cee6b4851050d642ddaa4017659e adc5b4b2a8cd7164da4867d83aa08c6e54c45614c1f4fc9aa1cbbedd3c20a1b3 -lib/codeql/rust/elements/internal/AsmSymImpl.qll e173807c5b6cf856f5f4eaedb2be41d48db95dd8a973e1dc857a883383feec50 ab19c9f479c0272a5257ab45977c9f9dd60380fe33b4ade14f3dddf2970112de lib/codeql/rust/elements/internal/AssocItemListConstructor.qll 1977164a68d52707ddee2f16e4d5a3de07280864510648750016010baec61637 bb750f1a016b42a32583b423655279e967be5def66f6b68c5018ec1e022e25e1 -lib/codeql/rust/elements/internal/AssocItemListImpl.qll 70e82744464827326bfc394dab417f39905db155fb631f804bf1f27e23892698 760c7b42137d010e15920f9623e461daaf16518ab44a36a15259e549ecd4fa7a lib/codeql/rust/elements/internal/AssocTypeArgConstructor.qll 58b4ac5a532e55d71f77a5af8eadaf7ba53a8715c398f48285dac1db3a6c87a3 f0d889f32d9ea7bd633b495df014e39af24454608253200c05721022948bd856 -lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll 5a5016276bef74ae52c6b7a04dfd46b0d466356292c110860c7f650a2d455100 b72b10eeede0f945c96f098e484058469f6e6e2223d29377d6ef3e2fde698624 lib/codeql/rust/elements/internal/AttrConstructor.qll de1dd30692635810277430291ba3889a456344dbd25938d9f8289ab22506d5cd 57b62b2b07dee4a9daeed241e0b4514ba36fd5ec0abb089869a4d5b2c79d6e72 -lib/codeql/rust/elements/internal/AttrImpl.qll 3d5b3b8efd1f1401a33585d36a8f127ea1dff21fc41330e2e6828925bcc0995a 28c9132499da2ccb00e4f3618341c2d4268c2dccbbf4739af33d4c074f9b29cd lib/codeql/rust/elements/internal/AwaitExprConstructor.qll 44ff1653e73d5b9f6885c0a200b45175bb8f2ceb8942c0816520976c74f1fc77 11e6f4a1e1462a59e2652925c8bd6663e0346c311c0b60ebe80daa3b55b268b0 lib/codeql/rust/elements/internal/BecomeExprConstructor.qll ba073aaa256cb8827a0307c3128d50f62b11aac0b1f324e48c95f30351a9b942 3a787ded505c3158fa4f4923f66e8ecdcb7b5f86f27f64c5412dc32dca031f18 lib/codeql/rust/elements/internal/BinaryExprConstructor.qll 7f9b17757f78b9fb7c46e21d2040a77fa50083bef4911c8464991c3d1ad91d87 a59390cd8e896c0bfbdc9ba0674e06d980ffcefa710fbc9886be52ed427e9717 @@ -247,51 +234,36 @@ lib/codeql/rust/elements/internal/BreakExprConstructor.qll 356be043c28e0b34fdf92 lib/codeql/rust/elements/internal/CallExprConstructor.qll 742b38e862e2cf82fd1ecc4d4fc5b4782a9c7c07f031452b2bae7aa59d5aa13a cad6e0a8be21d91b20ac2ec16cab9c30eae810b452c0f1992ed87d5c7f4144dc lib/codeql/rust/elements/internal/CastExprConstructor.qll f3d6e10c4731f38a384675aeab3fba47d17b9e15648293787092bb3247ed808d d738a7751dbadb70aa1dcffcf8af7fa61d4cf8029798369a7e8620013afff4ed lib/codeql/rust/elements/internal/CfgAtomConstructor.qll b71484029b4fdaa5df6b42f6b38c3feb0ad72284e5badf3d8413b78d6d14240b 146c73c0354d67fbccba5eb2fe21918ab441d953e005b4ec5482c80388d9493d -lib/codeql/rust/elements/internal/CfgAtomImpl.qll 47ca5355933e1c405dc2edec7bff9fd9be5132f708d6d7e0237a9f0a809eefa7 965eeca1d9ba5045735b16fa0340c0227f22418e0545f381c4df36eac23cf3fe lib/codeql/rust/elements/internal/CfgAttrMetaConstructor.qll 8cae731f5e86830dec3367b1c69e807389bc434b4f83ff6e13427e4106ec6f2c 0ced22b35219edf0250a8542062f66641f03c13575a3c71d4d718ce5146288ea -lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll 2b8a578d52aea3ab218f1337ba2c8737cf16e9c64580b1916860dc66ae3e9025 e92e5e8dc79b1da72873af410b778054df7e22bc9080719d60371bc72bc27043 lib/codeql/rust/elements/internal/CfgCompositeConstructor.qll 160bfbccdd80c9b9421b33cb302f6fe48bebe80050a01ad72a43f7332100f834 0102cad0255d632cac4ffaf334ce15f9beff9d7eb7d14a50255ef5c0e4b67d7b -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/CfgPredicateImpl.qll 3ba6c6732a7de4df967dd2cb2b4cc99db8aefb2301b75521f1b369052e3a2ec0 c07d4366f98f374f24e235f809946dc513a16203e4c1eb151c8185a5bc79e70d lib/codeql/rust/elements/internal/ClosureExprConstructor.qll a348229d2b25c7ebd43b58461830b7915e92d31ae83436ec831e0c4873f6218a 70a1d2ac33db3ac4da5826b0e8628f2f29a8f9cdfd8e4fd0e488d90ce0031a38 lib/codeql/rust/elements/internal/CommentConstructor.qll 0b4a6a976d667bf7595500dfb91b9cfc87460a501837ba5382d9a8d8321d7736 7d02d8c94a319dc48e7978d5270e33fc5c308d443768ff96b618236d250123f1 lib/codeql/rust/elements/internal/ConstArgConstructor.qll f63021dc1ca2276786da3a981d06c18d7a360b5e75c08bca5d1afece4f7c4a83 487a870cbf5ed6554d671a8e159edd9261d853eba2d28ce2bd459759f47f11f2 -lib/codeql/rust/elements/internal/ConstArgImpl.qll dc7e7b5fe1a6eeb61dd30a55a3ed2ab87bb82d712b40e4901cff44e4a6fae3f4 1ea7553d764617807df71286a4dd5cbbf51c9f45aa8c8c19e9cc91b41dbe0645 lib/codeql/rust/elements/internal/ConstBlockPatConstructor.qll ddb4a0045635d477e87360ecafec0ba90ddcffc6e62996eb6e7edd5a5d65b860 442061d0497a615b3f008b990f5e3c4f045110f76500eff81a7f44ffd1319acf -lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll 2082a3244c21e03b6dadfba9b3f97a00981324e10d1465d3a51cf3c921eb89e4 889e347834d8c6e90dfef9714af073b3b2193f6830f1c8356cee9c6573b3ecb4 lib/codeql/rust/elements/internal/ConstConstructor.qll 72a31fd9b8b3fd910e35af1b2b30fa54cc4d9e14e7eabdb94b4cd2af95b2df38 3edc0a82a7b446fdfd3e71947801f3c7cac010b2a217b8accb69980387bdd67a lib/codeql/rust/elements/internal/ConstParamConstructor.qll f6645f952aac87c7e00e5e9661275312a1df47172088b4de6b5a253d5c4ed048 eda737470a7b89cf6a02715c9147d074041d6d00fd50d5b2d70266add6e4b571 -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/DynTraitTypeReprConstructor.qll 6964e6c80fb7f5e283c1d15562cef18ed097452b7fcbc04eff780c7646675c7a f03c4830bf1b958fdfb6563136fa21c911b2e41ce1d1caee14ec572c7232866d lib/codeql/rust/elements/internal/EnumConstructor.qll eca1a13937faacb1db50e4cf69d175f992f2204a5aaed9144bb6f3cb63814ac5 1bafba78b2729fdb052a25a1ba3f4f70871564aa4df632b4a1d467858a437924 lib/codeql/rust/elements/internal/ExprImpl.qll ab20ee174e2e786f34af6e5dedf3ec071bb89fc266b3e91df6377f72aa38d3f2 f68192700f449bf1c229cfbaabd5353c7c559941c915d5a0c88752cf9844194b lib/codeql/rust/elements/internal/ExprStmtConstructor.qll dd6bb06a7d48c12f630aafd611621cc50ce0f3e7d9abba5484a695f90879264b dc8b6ec8acc314e041ae71868803630c5d4cab488c72c1ea929bb756e1847c52 -lib/codeql/rust/elements/internal/ExprStmtImpl.qll 420221c64245b490dab85f4e50d6b408cf488349869eb87312c166e185ad8145 2c2a4c71eea8c1ad8823e8e22780fadebb38ae502b3a7b9b062923a188fef692 lib/codeql/rust/elements/internal/ExternBlockConstructor.qll 884bafd1cb5a6ce9f54a7a6b9ba1c8814f38e3baf69a2ff8cfc8b02163204b9d ee26e070fcbfd730bbfaf0502d5ed54110c25f84e7b65948c8638a314b67ea5d -lib/codeql/rust/elements/internal/ExternBlockImpl.qll 6234810c73ede38cd78bf4824e729db0485522f0098f2a4af43c44233996f1eb 9b6327a491ee5c713b4f5056231e67160a34894c736cc5c7248a7c6c45f620ad lib/codeql/rust/elements/internal/ExternCrateConstructor.qll edd4d69ca7e36bd8389a96eac4ce04d9dd3857b0470b9f24319312469b0f8654 c80f4968e675f4b29e92a2fd8783f800823cc855ad193fee64869d5ba244d949 -lib/codeql/rust/elements/internal/ExternCrateImpl.qll 4aedfd8f0398015c3a93bf49d9ebdeb6a805bc05ae6ddbf5ee4d27b3af363f9b fba287a8b62ae795f28ac3aa1f67221109473deb48aaa91ff567087dbeb54d4e lib/codeql/rust/elements/internal/ExternItemImpl.qll 9a723a8d67054d8442dcca6dd0f285b25e69f39b1f4c90040fb04cd991d25069 e4de7bd6d9c1ce4a62b05ee4a64bdc169403bffa9673275c2a6c061ccff9a570 lib/codeql/rust/elements/internal/ExternItemListConstructor.qll 9e4f6a036707c848c0553119272fd2b11c1740dd9910a626a9a0cf68a55b249b efde86b18bd419154fb5b6d28790a14ea989b317d84b5c1ddbdfb29c6924fd86 -lib/codeql/rust/elements/internal/ExternItemListImpl.qll f73e1a11ff7810aa554254a394b5e167e45114c6deaa6c3d16fb2b3c6cd60286 b7f8453582fbd8d4a4e0472e850398418542e5c33bc4fe2f743a649374787aa4 lib/codeql/rust/elements/internal/ExtractorStep.qll 1c65668007ea71d05333e44132eccc01dc2a2b4908fb37d0a73995119d3ed5f0 8cbe1eeb35bc2bc95c1b7765070d1ff58aae03fd28dc94896b091858eea40efe lib/codeql/rust/elements/internal/ExtractorStepConstructor.qll 00c527a3139ad399ea1efd0ebe4656372d70f6c4e79136bc497a6cb84becae8e 93817f3dddeaf2c0964ab31c2df451dcee0aeba7cb6520803d8ce42cefcb3703 lib/codeql/rust/elements/internal/FieldExprConstructor.qll b3be2c4ccaf2c8a1283f3d5349d7f4f49f87b35e310ef33491023c5ab6f3abc5 645d0d4073b032f6b7284fc36a10a6ec85596fb95c68f30c09504f2c5a6f789f lib/codeql/rust/elements/internal/FieldListImpl.qll 6b80b573989ee85389c4485729a40c92c7e0a5b8a96a4385e812c74fb63c894f d333bcb043616b95ffefed4d216f94e5b07541f8153e4fb8084f4e793947b023 lib/codeql/rust/elements/internal/FnPtrTypeReprConstructor.qll 61d8808ea027a6e04d5304c880974332a0195451f6b4474f84b3695ec907d865 0916c63a02b01a839fe23ec8b189d37dc1b8bc4e1ba753cbf6d6f5067a46965a -lib/codeql/rust/elements/internal/FnPtrTypeReprImpl.qll 6b66f9bda1b5deba50a02b6ac7deb8e922da04cf19d6ed9834141bc97074bf14 b0a07d7b9204256a85188fda2deaf14e18d24e8a881727fd6e5b571bf9debdc8 lib/codeql/rust/elements/internal/ForBinderConstructor.qll 98f16b0106a19210713404f4be8b1b9f70c88efb0b88bdf2f9ea9c8fbd129842 a7af9e75f11d824a60c367924542a31a0f46f7b1f88d3ee330d4dd26b2f29df5 lib/codeql/rust/elements/internal/ForExprConstructor.qll d79b88dac19256300b758ba0f37ce3f07e9f848d6ae0c1fdb87bd348e760aa3e 62123b11858293429aa609ea77d2f45cb8c8eebae80a1d81da6f3ad7d1dbc19b lib/codeql/rust/elements/internal/ForTypeReprConstructor.qll eae141dbe9256ab0eb812a926ebf226075d150f6506dfecb56c85eb169cdc76b 721c2272193a6f9504fb780d40e316a93247ebfb1f302bb0a0222af689300245 -lib/codeql/rust/elements/internal/ForTypeReprImpl.qll 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,57 +273,47 @@ 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/ImplTraitTypeReprConstructor.qll 1ed355e5e56f432b24b6f4778e4dc45c6e65095190cacb7a5015529e0c9d01f8 c8505185a042da4eb20a0cc32323194a0290c4bf821c7e0fce7351b194b10f31 +lib/codeql/rust/elements/internal/IncludeBytesExprConstructor.qll 62d20cf32e8c0fa62ef5b472e3b5538b95cc6bf275955f195a4924c2f38c9ba8 5fd4b50e9760af5a5c76d616658adde406470c4c9eac9b846dc0b7583e6460c1 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 -lib/codeql/rust/elements/internal/ItemListImpl.qll 195dbe93c334ad2bfc29db530bda9aaea88fc31696b2f230faae9e6c2ecb74a8 e498983a5b2f7a91e2fd336e85ac17e521a18c677784a0788d95bb283f3652e7 lib/codeql/rust/elements/internal/KeyValueMetaConstructor.qll 946f4df587ae7c77445faec67b0c796e008a10c642e5bdf881f9f75e819a1f93 d2bff94a5f8967fabadb76424917383e1472467db1d90214b1b871ebf8da672d -lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll 6f895ee05d983885ad3624b5c64483f2c9024888ed62781889c589ba6fadb4eb 4004bb1b22c30e27f7e2262e9788d1ad3ea4cb08729d8910140c54663a123b91 lib/codeql/rust/elements/internal/LabelConstructor.qll 1f814c94251e664bfa1b1a606aef995382e40e78d4f953350ec951ee0bc8bd34 3157fb8c7c6bd365a739f217ad73ba1e0b65ccd59b922e5ab034e3449915b36c lib/codeql/rust/elements/internal/LetElseConstructor.qll b2b5d68e5701379a0870aa6278078e09f06aa18ddd14045fc6ae62e90827ece7 7359e70bea8a78bcaf6e6ecc8cc37c5135ae31415b74645594456cc8daa82118 lib/codeql/rust/elements/internal/LetExprConstructor.qll 66f27cbdafb2b72b31d99645ec5ed72f4b762a7d6f5d292d7639dd8b86272972 7da048f4d7f677919c41d5c87ead301eacc12ece634d30b30a8ae1fab580ff30 lib/codeql/rust/elements/internal/LetStmtConstructor.qll 7ee0d67bebd6d3b9c7560137c165675d17b231318c084952ba4a2226d61e501f 84199ba755bb6c00579eee245b2bca41da478ca813b202b05abaa1246dcf13d8 lib/codeql/rust/elements/internal/LifetimeArgConstructor.qll 270f7de475814d42e242e5bfe45d7365a675e62c10257110286e6a16ce026454 643d644b60bfe9943507a77011e5360231ac520fbc2f48e4064b80454b96c19b -lib/codeql/rust/elements/internal/LifetimeArgImpl.qll ea3e831077f6ee51de90949a3487b007aeeea74f08e74ee8ce2f4f1a41bc7b7c da99145353601cf124e4ebbd425cc4b8561b5f6f7451c9696ac0bed94eaf84cd lib/codeql/rust/elements/internal/LifetimeConstructor.qll 2babe40165547ac53f69296bb966201e8634d6d46bc413a174f52575e874d8cd ef419ae0e1b334d8b03cdb96bc1696787b8e76de5d1a08716e2ff5bd7d6dc60d lib/codeql/rust/elements/internal/LifetimeParamConstructor.qll 530c59a701d814ebc5e12dc35e3bfb84ed6ee9b5be7a0956ea7ada65f75ff100 ff6507e5d82690e0eec675956813afabbbcfb89626b2dbfffe3da34baeff278c -lib/codeql/rust/elements/internal/LifetimeParamImpl.qll e9251af977880dcdf659472fa488b3f031fa6f6cbf6d9431218db342148b534f 63b287477b23434f50763b2077a5f2461de3d8ba41ef18ac430ffa76eb7f2704 lib/codeql/rust/elements/internal/LiteralExprConstructor.qll 8ea3569bd50704ce7d57be790d2dfd38f4c40cb0b12e0dd60d6830e8145a686f 88d07ad3298003f314f74bd8e3d64a3094de32080ad42a7e6741c416c3856095 lib/codeql/rust/elements/internal/LiteralPatConstructor.qll b660cb428a0cba0b713fc7b07d5d2921de4a2f65a805535fb6387684c40620de 2dbc9fbc56e9de53d24265d6b13738ef5b9ced33cc3c4c1c270e04dc2fc1330f lib/codeql/rust/elements/internal/LoopExprConstructor.qll 45f3f8f7441fcab6adc58831421679ee07bac68ac0417f3cbc90c97426cc805b f7ab3361b4a11e898126378ea277d76949466946762cd6cb5e9e9b4bb9860420 lib/codeql/rust/elements/internal/LoopingExprImpl.qll 17885c1bcf7b5a3f9c7bbad3d4d55e24372af0dedd5e7fc0efcfc0a8b2cdad70 104dc45ca399b9f6e8227ad561679f728d60170398a52b31fc90cb2a2dd3c33c lib/codeql/rust/elements/internal/MacroCallConstructor.qll 707fee4fba1fd632cd00128f493e8919eaaea552ad653af4c1b7a138e362907d b49e7e36bf9306199f2326af042740ff858871b5c79f6aeddf3d5037044dbf1f lib/codeql/rust/elements/internal/MacroDefConstructor.qll 382a3bdf46905d112ee491620cc94f87d584d72f49e01eb1483f749e4709c055 eb61b90d8d8d655c2b00ff576ae20c8da9709eeef754212bc64d8e1558ad05ce -lib/codeql/rust/elements/internal/MacroDefImpl.qll 73db95ff82834e0063699c7d31349b65e95ba7436fe0a8914dbdd3a383f8b1c9 cd2f078f84ce73fdc88b207df105b297f2cd3b780428968214443af3a2719e8f lib/codeql/rust/elements/internal/MacroExprConstructor.qll b12edb21ea189a1b28d96309c69c3d08e08837621af22edd67ff9416c097d2df d35bc98e7b7b5451930214c0d93dce33a2c7b5b74f36bf99f113f53db1f19c14 -lib/codeql/rust/elements/internal/MacroExprImpl.qll 35b0f734e62d054e0f7678b28454a07371acc5f6fb2ae73e814c54a4b8eb928a cd3d3d9af009b0103dd42714b1f6531ee6d96f9f40b7c141267ce974ef95b70e lib/codeql/rust/elements/internal/MacroItemsConstructor.qll 8e9ab7ec1e0f50a22605d4e993f99a85ca8059fbb506d67bc8f5a281af367b05 2602f9db31ea0c48192c3dde3bb5625a8ed1cae4cd3408729b9e09318d5bd071 -lib/codeql/rust/elements/internal/MacroItemsImpl.qll f89f46b578f27241e055acf56e8b4495da042ad37fb3e091f606413d3ac18e14 12e9f6d7196871fb3f0d53cccf19869dc44f623b4888a439a7c213dbe1e439be lib/codeql/rust/elements/internal/MacroPatConstructor.qll 24744c1bbe21c1d249a04205fb09795ae38ed106ba1423e86ccbc5e62359eaa2 4fac3f731a1ffd87c1230d561c5236bd28dcde0d1ce0dcd7d7a84ba393669d4a -lib/codeql/rust/elements/internal/MacroPatImpl.qll c014ffc6c8de9463d61b1d5f0055085543f68918fa9161723565fc946154b437 fb5d0679fe409c8dad7247fdfc1289ef944537f2a51e08bcf4bbb1485ef5fd2a lib/codeql/rust/elements/internal/MacroRulesConstructor.qll dc04726ad59915ec980501c4cd3b3d2ad774f454ddbf138ff5808eba6bd63dea 8d6bf20feb850c47d1176237027ef131f18c5cbb095f6ab8b3ec58cea9bce856 -lib/codeql/rust/elements/internal/MacroRulesImpl.qll 63f5f1151075826697966f91f56e45810de8f2ac3ec84b8fd9f5f160f906f0d5 1b70f90f4b7fb66839cfe0db84825a949ed1518278a56921ed0059857d788e2b lib/codeql/rust/elements/internal/MacroTypeReprConstructor.qll cf8a3bdcd41dda1452200993206593e957825b406b357fc89c6286cb282347ac a82279485416567428ab7bff7b8da7a3d1233fb1cfcdb1b22932ff13bd8c8ec9 -lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll 50d47f2c0732a0fa33ed815e2b70ae0dbe78364abc8091e7bf89936c894a1e39 bf8a6454bb616cb64f51c546701988f00fb2ae9f3fc0dca311d87e7c240eb1b1 lib/codeql/rust/elements/internal/MatchArmConstructor.qll b41c1d5822d54127ce376ef62c6a5fa60e11697319fc7d9c9c54fd313d784a93 96cca80e5684e5893c0e9c0dff365ef8ad9e15ff648c9969ba42d91f95abea05 lib/codeql/rust/elements/internal/MatchArmListConstructor.qll 8bc5ac978fe1158ef70d0ac06bdad9e02aadd657decb64abcc4ea03f6715a87a 4604ab0e524d0de6e19c16711b713f2090c95a8708909816a2b046f1bd83fe24 -lib/codeql/rust/elements/internal/MatchArmListImpl.qll 16de8d9e0768ee42c5069df5c9b6bf21abcbf5345fa90d90b2dfcefd7579d6d9 91575188d9ed55d993ed6141e40f3f30506e4a1030cac4a9ac384f1e0f6880a9 lib/codeql/rust/elements/internal/MatchExprConstructor.qll 0355ca543a0f9ad56697bc2e1e2511fa3f233bc1f6344d9e1c2369106901c696 78622807a1c4bff61b751c715639510146c7a713e0c4f63246e9a2cf302f4875 lib/codeql/rust/elements/internal/MatchGuardConstructor.qll d4cae02d2902fe8d3cb6b9c2796137863f41f55840f6623935a1c99df43f28d8 0c89f2ca71a2fd5a3f365291e784cb779e34ba0542d9285515e1856424cec60d -lib/codeql/rust/elements/internal/MatchGuardImpl.qll 489040ca1ea85edda91405fab3d12321b6541d2888c35356d3c14c707bf1468e 2b60223a822b840356a3668da3f9578e6a9b8f683fcdd3dbd99b5354c7d96095 lib/codeql/rust/elements/internal/MethodCallExprConstructor.qll a1b3c4587f0ae60d206980b1d9e6881d998f29d2b592a73421d6a44124c70c20 8d4eaa3eb54653fac17f7d95e9cc833fe1398d27c02b2388cd9af8724a560ded lib/codeql/rust/elements/internal/MissingConstructor.qll aab0b7f2846f14a5914661a18c7c9eae71b9bde2162a3c5e5e8a8ecafa20e854 8f30b00b5b7918a7500786cc749b61695158b5b3cc8e9f2277b6b6bf0f7850a0 lib/codeql/rust/elements/internal/MissingImpl.qll e81caa383797dfe837cf101fb78d23ab150b32fef7b47ffcc5489bfcd942ac3e 9f3212d45d77e5888e435e7babd55c1e6b42c3c16f5b1f71170ac41f93ee8d0b lib/codeql/rust/elements/internal/ModuleConstructor.qll 31cc83c9d8f25ac07375d19e568f05c068e1f5aa205ff3d9ac31c2510e6f8468 8a70f3f1c18ff87f17e6baf2f05ccaed55c70469288192fc39ef0bb5531b8c0e +lib/codeql/rust/elements/internal/MutRestrictionConstructor.qll 002e0b35790932db84a5643d9ffc531b10dc327b1b44b966e773bf9b4e46a325 5d81599d543825b8ace752dc03bafc9bae7f13bc8bcbb3db5e2e0243fc9c6772 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/OffsetOfExprConstructor.qll 616e146562adb3ac0fba4d6f55dd6ce60518ed377c0856f1f09ba49593e7bfab 80518ce90fc6d08011d6f5fc2a543958067739e1b0a6a5f2ed90fc9b1db078f0 -lib/codeql/rust/elements/internal/OffsetOfExprImpl.qll e52d4596068cc54719438121f7d5afcaab04e0c70168ac5e4df1a3a0969817a6 6ab37e659d79e02fb2685d6802ae124157bf14b6f790b31688f437c87f40f52c lib/codeql/rust/elements/internal/OrPatConstructor.qll 4ef583e07298487c0c4c6d7c76ffcc04b1e5fe58aba0c1da3e2c8446a9e0c92b 980a6bd176ae5e5b11c134569910c5468ba91f480982d846e222d031a6a05f1a lib/codeql/rust/elements/internal/ParamConstructor.qll b98a2d8969f289fdcc8c0fb11cbd19a3b0c71be038c4a74f5988295a2bae52f0 77d81b31064167945b79b19d9697b57ca24462c3a7cc19e462c4693ce87db532 lib/codeql/rust/elements/internal/ParamListConstructor.qll 3123142ab3cab46fb53d7f3eff6ba2d3ff7a45b78839a53dc1979a9c6a54920e 165f3d777ea257cfcf142cc4ba9a0ebcd1902eb99842b8a6657c87087f3df6fe @@ -359,42 +321,31 @@ lib/codeql/rust/elements/internal/ParenExprConstructor.qll 104b67dc3fd53ab52e2a4 lib/codeql/rust/elements/internal/ParenPatConstructor.qll 9aea3c3b677755177d85c63e20234c234f530a16db20ab699de05ca3f1b59787 29f24aed0d880629a53b30550467ade09a0a778dbf88891769c1e11b0b239f98 lib/codeql/rust/elements/internal/ParenTypeReprConstructor.qll b3825399f90c8546c254df1f3285fe6053b8137e4705978de50017be941c9f42 696fa20ce5bd4731566b88c8ea13df836627354d37cc9d39514d89d8fb730200 lib/codeql/rust/elements/internal/ParenthesizedArgListConstructor.qll 67f49d376e87a58d7b22eb6e8f90c5b3d295a732be657b27ea6b86835a0ac327 6549e4f5bccb2d29dfeb207625f4d940344ac1bb4c7a7ae007a8eb1c4c985da0 -lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll c885ff2903fcbe89540aff643d416e8d0dd5dcf1f7a77f48b9952f4679f8c92b 7e5d8e6d77999f02fe4267ceac6892b2063b1252cf5fa3bceab7898c6bad5c54 lib/codeql/rust/elements/internal/PathAstNodeImpl.qll 5a38c42a9127fc2071a9e8f0914996d8c3763e2708805de922e42771de50f649 ebe319cce565497071118cd4c291668bbcdf5fc8942c07efc5a10181b4ce5880 lib/codeql/rust/elements/internal/PathConstructor.qll 5c6354c28faf9f28f3efee8e19bdb82773adcf4b0c1a38788b06af25bcb6bc4a 3e2aeef7b6b9cda7f7f45a6c8119c98803aa644cf6a492cf0fce318eba40fe8f lib/codeql/rust/elements/internal/PathExprBaseImpl.qll e8b09447ee41b4123f7d94c6b366b2602d8022c9644f1088c670c7794307ab2e 96b9b328771aaf19ba18d0591e85fcc915c0f930b2479b433de3bfdd2ea25249 lib/codeql/rust/elements/internal/PathExprConstructor.qll cf6e0a338a8ed2d1042bdee4c2c49be5827e8c572d8c56e828db265d39e59ae3 36a3d1b7c5cc2cf527616be787b32071b9e2a6613a4f6b3f82e2a3b0e02a516f lib/codeql/rust/elements/internal/PathMetaConstructor.qll de6ebd053e66f0c72e6acb59c7a7e7326abfe0331e65080cc539030b93c49e32 327a8d8b5a6d721daa763cb5dac83247f9b2d9650be53ce01cbae02b15fbad94 -lib/codeql/rust/elements/internal/PathMetaImpl.qll 052152ec17c827054b1e9fccfc7cd7cb12fc0787e82242fde5724fd7a77b3b39 677460de83898bdfc9f06460ddb5dab2d4d884a88998c879b7eff5018d9b434a 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/PrefixExprConstructor.qll 90c50b0df2d4b4cbf5e2b7d67a9d243a1af9bfff660b7a70d8b9c7859c28bca7 1a1b5ea1f06ed8d41a658c872e8e1915c241a7c799c691df81b9a7b55d8f2f1e lib/codeql/rust/elements/internal/PtrTypeReprConstructor.qll c8bd3502dc23429577fbff0fe3e3c78b812b2237b2bb65862c137083fdaa7a4a 4d5c135be30f71a3712acbc22bdb6c425fa6463043a9ee64543da31151d68366 -lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll cb3cf7960a05f2c1930067fc62c5a207fc5faac143758b9b9e5f117fbd073f2f 40545d4768380f0dde9b708932f92f57566ac49f3f9b4147a8ff2ea90a0947c7 lib/codeql/rust/elements/internal/RangeExprConstructor.qll a0aa90a1c38c5deea56475399016afae2a00a858b961fbbab8ddeb3bc6a08103 0ddf1bcf28aafc56d7334e6138fb268f9b36a429e4cbdd982cd8384e0644076b lib/codeql/rust/elements/internal/RangePatConstructor.qll fe4345cb41d970ab64196ca37eccb26e5b9cf85fab4253cacfd2b31de03bd070 1d09d5ec8203d76aed2dfb7e7f14c0c07d6559c8f589e11860fff8a2c682c1a6 -lib/codeql/rust/elements/internal/RangePatImpl.qll ef11ab2c002896036553231741a7cf896fafa09e22e920e15661b9cbe4393cae 24ac2dcce3055a77f3a5e0b38cf13aebefd2eeaefa53674ff144a6225634ac0d lib/codeql/rust/elements/internal/RefExprConstructor.qll 9ad08c0f3d980a56a2af8857cb84db589941d20ab3ae5c8ece004ccaccaaf950 4cac3ace31b7ed77a72e989fce9cdbae2247f03c28a3f0c50d67385d02c7f193 lib/codeql/rust/elements/internal/RefPatConstructor.qll d8b88c2c468b08072f6f853306eb61eb88ee1e6c5cfb63958f115a64a9715bb3 0c1d6a8af6a66912698acce47e89d4e3239e67f89c228a36a141f9c685c36394 lib/codeql/rust/elements/internal/RefTypeReprConstructor.qll 8e7012b456ebf1cc7a2c50892c0fffd51f0d5d83e417e1d4cabd4d409e3dddc0 4f3c6368bcea5e8c3f0b83591336f01331dc6dabf9c1e8b67de0fc4d640f65f0 -lib/codeql/rust/elements/internal/RefTypeReprImpl.qll 553dd95e1a49ab7aef5db08e7bb550104c604ec33c9a3c7529370cd47c6a0965 8902db7c814f631c2a995df5911a7b13b6a38c524417e4bbbf2bda74ad53e14c lib/codeql/rust/elements/internal/RenameConstructor.qll 65fa2e938978d154701e6cac05b56320b176ee014ef5c20a7b66f3e94fd5c4a7 dfc0ff4606b8e1c14003cc93a0811f4d62ec993b07ff3c1aa0776746577ed103 -lib/codeql/rust/elements/internal/RenameImpl.qll 61c681055f1f86402af0772539f702e9e19a123f8cfcfca225535c3a1a4cb1d7 1aa1c78616c4b54a31c8af74de141aef9e5ada53f3859df631ecb4238faabdbf lib/codeql/rust/elements/internal/RestPatConstructor.qll 45430925ddf08fba70ede44c7f413ddb41b3113c149b7efc276e0c2bf72507b4 25c678898d72446e7a975bb8b7f2fde51e55b59dbd42f2cca997c833b1a995f1 lib/codeql/rust/elements/internal/RetTypeReprConstructor.qll 6dcb56c92a13f5ca2c9a8344bc05638cc611543896c578cd6ca185054f155537 3fe34953ba397dc31533bd28b48df76693e86b51c4a89c26ad4dfdbd816a0874 -lib/codeql/rust/elements/internal/RetTypeReprImpl.qll 321355a9b39193e09ef7c38b807d7f3c221dce06b0cafd2e0ceccdfbb81712e4 02ea0fb17416889b400e0706eeacc0afc6b489b76158e8c26b9b77102df6bd60 lib/codeql/rust/elements/internal/ReturnExprConstructor.qll 57be5afbe20aa8db6e63c1f2871914c19c186730ad7dccaa424038c6305730d5 4d3c4f2e9b38a4b54ff26a0032455cdcca3d35fec201b6c932072a9e31fbb4fe lib/codeql/rust/elements/internal/ReturnTypeSyntaxConstructor.qll 8994672e504d1674e5773157d0ad8a0dc3aad3d64ef295e7722e647e78e36c11 abe7df754721f4ff7f3e3bb22d275976b2e9a1ef51436a461fe52ebd2d29cff1 -lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll 554af21b52fedfc356cb873e25c2429e6660ae62ea01be708de4342960cf4048 cdc497a3693bb162a7528b75e902c4743b0a974c6c44152f822a16107a83bee4 lib/codeql/rust/elements/internal/SelfParamConstructor.qll a63af1d1ccde6013c09e0397f1247f5ab3efd97f3410dd1b6c15e1fb6cd96e54 0d8977653c074d5010c78144327f8b6c4da07f09d21e5cc3342082cd50107a81 -lib/codeql/rust/elements/internal/SelfParamImpl.qll 4112ffa718b95b3917ac3dfb45f4f4df56c1ee9cbbc61b91ec16628be57001c5 23f49c040a785ff5c9b09891d09007e9878fa78be086a68621d1f4d59d2e5d86 lib/codeql/rust/elements/internal/SlicePatConstructor.qll 19216ec9e87ca98784d78b29b8b06ea9ac428e2faa468f0717d1c0d0a8e7351c 458e5be76aa51aec579566be39486525ec9d4c73d248cb228da74892e2a56c08 -lib/codeql/rust/elements/internal/SlicePatImpl.qll c6176095360e3b23382557242d2d3ff0b5e0f01f8b1c438452518e9c36ff3c70 644ab41a59a619947f69f75e2d0807245d4ddefc247efaeab63b99b4f08c1cc1 lib/codeql/rust/elements/internal/SliceTypeReprConstructor.qll 4576f203450767bfd142b1d6797b6482bb78f7700b6b410475b182d5067504ae 2b5aeaf91d5ea10e2370fa88b86bce7d0691d6d00f18ab8e1a1be917bb1619bb -lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll ba1a53a3ecc90a7f54c003fc9610c782ce169faf9674010e14ed08a947f464e1 ccd1b77eea0a528fca76d5a4d6590ce259727fe38b4a2d7860974bf2c64389bb lib/codeql/rust/elements/internal/SourceFileConstructor.qll 1dc559887ea7798774528b5505c8601c61030c17480f7ffca49b68b76fcc0321 75a635b88622e3110b16795bd12ca6fc4af176c92d6e441518d60aa47255edc1 -lib/codeql/rust/elements/internal/SourceFileImpl.qll 829cc59d508c190fecfcfb0e27df232fd0a53cb98a6c6f110aecc7242db6f794 2834ab836557ae294410ccde023cca6ef6315aa4b78a7c238862437cec697583 lib/codeql/rust/elements/internal/StaticConstructor.qll 6dd7ee3fd16466c407de35b439074b56341fc97a9c36846b725c2eb43fd4a643 5bf5b0e78d0e9eb294a57b91075de6e4b86a9e6335f546c83ec11ab4c51e5679 lib/codeql/rust/elements/internal/StmtImpl.qll ea99d261f32592ff368cc3a1960864989897c92944f1675549e0753964cb562f 9117b4cdfad56f8fa3bc5d921c2146b4ff0658e8914ac51bf48eb3e68599dd6b lib/codeql/rust/elements/internal/StmtListConstructor.qll 435d59019e17a6279110a23d3d5dfbc1d1e16fc358a93a1d688484d22a754866 23fcb60a5cbb66174e459bc10bd7c28ed532fd1ab46f10b9f0c8a6291d3e343f @@ -402,36 +353,25 @@ lib/codeql/rust/elements/internal/StructConstructor.qll 52921ea6e70421fd08884dc0 lib/codeql/rust/elements/internal/StructExprConstructor.qll 69761fa65a4bedf2893fdfc49753fd1289d9eb64cf405227458161b95fa550cb 72ed5f32dcf6a462d9d3cadfc57395a40ee6f4e294a88dbda78761b4a0759ece lib/codeql/rust/elements/internal/StructExprFieldConstructor.qll 6766d7941963904b3a704e64381a478d410c2ef88e8facbc82efca4e781dac96 a14ce465f0f4e43dea5c21c269d803b0ad452d2eb03f4342ea7a9f5d0b357d60 lib/codeql/rust/elements/internal/StructExprFieldListConstructor.qll fda308db380c608d5df1dc48b30bccb32bce31eabff807d0e623b812000a2a2c 84fb7cb24bf61aec602956f867c722d10907b3edfd4dd6946f1349cf6240b4f1 -lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll 93c8e243095ad67e9cf59e6f66af08244fd45539199193d18275d946ea558ee3 53c90a886971cf6d8a6afd10a1f4bb859e0b9ebc17f32fcb220a01c1d6524743 lib/codeql/rust/elements/internal/StructFieldConstructor.qll 07c7ca8cd5666a0d022573e8d4f9a2e8b237c629c729b9563d783f5e34f232ce 82de0f502272ebdc4f3b15aa314611dd20e82f78ad629e79b5459fdcacf44f9e lib/codeql/rust/elements/internal/StructFieldListConstructor.qll c4ed03a31f08e63f77411e443635ae20caa82c0b4ce27a8ca0011ddf85602874 9f6c12949ea06f932c141fed8e6f7d2d93e0d3305dfc60db163feb34ada90917 -lib/codeql/rust/elements/internal/StructFieldListImpl.qll 7b0d40025d49d133ea34d9e6abddca379fc5e1158813c68b9e2bf2b8b17b40a8 67262e95dc760e7f0dd0e8c54ccd9a0abc95d7cca15c22430c1020dbc6366e6a lib/codeql/rust/elements/internal/StructPatConstructor.qll 4289608942b7ca73d5a7760232ef23cd9a1baf63cc1d0dc64e7dfea146194fe4 189aec3a5c376addd75b17a79729837fb4185de4abf45008df3956a2d9cdadb8 lib/codeql/rust/elements/internal/StructPatFieldConstructor.qll 780294d2bbad2062a7c66a0dca370e12551d94dd97540936864cf26cbafd7d0e aa9c717f3ec13927be9c598af06ae0b785fb6645a409acf4eaedf07b0b765079 lib/codeql/rust/elements/internal/StructPatFieldListConstructor.qll f67090a3738f2dc89874325c1ec2d4b4d975a5fdef505f0008a016f33868bebb 1c10b9ae42ed78758f59902c44c3eeebb0bd862c04783f83aa4db5653f12bf0e -lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll 046464430ba9cc0a924bb1370b584650c29b6abdaf0da73faa87cf7ec85cf959 84d236a133a016fbd373dbbc1aa70741f5ea67b3ea678adfac2625bc714419af lib/codeql/rust/elements/internal/TokenImpl.qll 87629ffee74cacc6e8af5e96e18e62fb0fa4043d3ba1e7360daa880e628f8530 d54e213e39ae2b9bb92ab377dc72d72ba5bca88b72d29032507cdcbef201a215 lib/codeql/rust/elements/internal/TokenTreeConstructor.qll 0be1f838b04ff944560aa477cbe4ab1ad0b3f4ae982de84773faac5902fcae45 254b387adc2e1e3c355651ab958785d0b8babbc0030194234698a1219e9497b3 -lib/codeql/rust/elements/internal/TokenTreeImpl.qll 7c16b22a8ff4ad33be25c3d2d43b8f043cab7626538ac5d8938b074dc663b4f4 793e04299d571a8cea2097e6c43136c5e618b31da91ccc68bda334c3d2c3793d lib/codeql/rust/elements/internal/TokenTreeMetaConstructor.qll 059903cc9cbc77d753f1e7833bbc6ba42d55d281bdf0a3ec1c79d0224be1613f b387eb1eb56f83ff9b2831552db5f23af9b8b8bd822e277f2c1e95ed88b71c1f -lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll e0c30c264f05a5b610c6d1c7bdacd804b4188031e3968756e6670d51b9b7ee02 084adcb4898a694a8be217a416b693e8291848f3802d4437a2004384ab079037 lib/codeql/rust/elements/internal/TraitConstructor.qll 1f790e63c32f1a22ae1b039ca585b5fe6ffef6339c1e2bf8bca108febb433035 535cebd676001bfbbb724d8006fa2da94e585951b8fd54c7dc092732214615b5 lib/codeql/rust/elements/internal/TryBlockModifierConstructor.qll 55a69eced15a1637cb84889e50cf465bbc677baaf4bf3e4e5ab37615018f5803 ee6141225ade44559067474a75b27e3c68dbb149dc9c24dacc1e9d8c791f13f7 -lib/codeql/rust/elements/internal/TryBlockModifierImpl.qll 97ab789b3a0d9f9e851cee967cc92ae28446355e7bfeb7ff598787f18b9fdfa5 6f24a42b5e4c448f3ac447200becbf63b83bf1f26e99fca933f5e4262906d278 lib/codeql/rust/elements/internal/TryExprConstructor.qll 98e3077ebc4d76f687488b344f532b698512af215b66f0a74b5cea8ed180836c b95603c10c262911eeffdf4ccba14849e8443916b360e287963d5f2582d8e434 -lib/codeql/rust/elements/internal/TryExprImpl.qll cacf43a49ba518be3f94e4a355f5889861edc41f77601eff27e0ed774eca6651 5f4a6a346ec457d5de89b32419e8b4c2deddc55e2d61dbb59842d7f34aa11c44 lib/codeql/rust/elements/internal/TupleExprConstructor.qll 71c38786723225d3d90399b8a085b2b2664c62256654db9e1288fadd56745b9d 639ad70b49ebadc027127fbdc9de14e5180169a4285908233bc38ccac6f14110 -lib/codeql/rust/elements/internal/TupleExprImpl.qll daabbc7dd36c615cdd8d3b59e06f4992a302b26554115711f733508836887abe 4c43a26e5f8b68d9d032bb5cd0af88cf9ac9b4b4e40af47dc85dd931ce9db6f8 lib/codeql/rust/elements/internal/TupleFieldConstructor.qll 89d3cf2540235044ed5a89706cfbdebc5cdf9180fd5b6d3376c79a1b2c0430c0 16861fe089aac8e42a5a90d81dd48d5015391d0a06c78ca02bd876d65378699f lib/codeql/rust/elements/internal/TupleFieldListConstructor.qll 4335ba2061b6e4968db9ec05c0b4d3e6a564db89a2df69e036f317672a7900b1 0b8dded875dbf696cf588e8c21acc27332a2ff66ced7bfabdfc1ad621991f888 -lib/codeql/rust/elements/internal/TupleFieldListImpl.qll 2e5141d5894d1cebadef9cd3afe7585779327c4e24390201e1ef05a29401caf8 bbfa1e0b513393012bf2ae43a3aa0e33fce6ea4d110d1be0f039562071f3c547 lib/codeql/rust/elements/internal/TuplePatConstructor.qll 2a5e83ad5b8713a732e610128aeddf14e9b344402d6cf30ff0b43aa39e838418 6d467f7141307523994f03ed7b8e8b1a5bcf860963c9934b90e54582ea38096a lib/codeql/rust/elements/internal/TupleStructPatConstructor.qll 9d68f67a17a5cec0e78907a53eccfa7696be5b0571da4b486c8184274e56344a 3ffa29f546cd6c644be4fecc7415477a3a4dc00d69b8764be9119abe4c6d8b9e lib/codeql/rust/elements/internal/TupleTypeReprConstructor.qll 80c31c25fd27e330690fb500d757a4bbd33f226186d88ea73bfe4cf29a7db508 d572a72fa361990a3d0a3f9b81d1e966e2ba1ac0a60314ec824c1b8b2814c857 -lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll daf679e3cac0eaf1c20880b49b22bbe0822a27cc6ab2c241916b4bf6da995586 ebd87d7fce7d8acd7fa37c4107f8210e60412dd418104bd9fdbdbcde13c8b6a7 lib/codeql/rust/elements/internal/TypeAliasConstructor.qll 048caa79eb7d400971e3e6d7e580867cbee4bd6b9d291aafac423aa96c321e76 d1d1e33a789ae6fa1a96af4d23d6376b9d82e14e3cbb777963e2d2cb8b22f66d lib/codeql/rust/elements/internal/TypeArgConstructor.qll 51d621e170fdf5f91497f8cc8c1764ce8a59fde5a2b9ecfad17ce826a96c56c4 a5bbb329bde456a40ffa84a325a4be1271dbde842c1573d1beb7056c8fb0f681 -lib/codeql/rust/elements/internal/TypeArgImpl.qll 77886af8b2c045463c4c34d781c8f618eec5f5143098548047730f73c7e4a34a 6be6c519b71f9196e0559958e85efe8a78fbce7a90ca2401d7c402e46bc865c9 lib/codeql/rust/elements/internal/TypeBoundConstructor.qll ba99616e65cf2811187016ff23e5b0005cfd0f1123622e908ff8b560aaa5847f fde78432b55b31cf68a3acb7093256217df37539f942c4441d1b1e7bf9271d89 lib/codeql/rust/elements/internal/TypeBoundListConstructor.qll 4b634b3a4ca8909ce8c0d172d9258168c5271435474089902456c2e3e47ae1c5 3af74623ced55b3263c096810a685517d36b75229431b81f3bb8101294940025 lib/codeql/rust/elements/internal/TypeItemImpl.qll e439593cfbf8fb647b69151b7a0ef2b60b7dfa4603d1a0d911b0f924997acd0c 72caab93da71a88df1c0890ae70e866dc607ce61b177243ee60afa555881c72b @@ -443,28 +383,21 @@ lib/codeql/rust/elements/internal/UnimplementedConstructor.qll 70b0489fdc75fed38 lib/codeql/rust/elements/internal/UnimplementedImpl.qll 06771abc088e0a8fc24032c9d2633618e8e40343ef8757a68cc0a70f1617165a 5738f626f1f4f573fdf7dcd5bd57a0948d290ed89342b9160e95ef3c84044f9a lib/codeql/rust/elements/internal/UnionConstructor.qll d650551a1b3ef29c5a770bdad626269cf539ed0c675af954bc847d2c6111f3f6 aca9064ad653a126ab4f03703e96b274587c852dc5e7ff3fea0fec4d45993f10 lib/codeql/rust/elements/internal/UnsafeMetaConstructor.qll 89c041ebd8ff05137d0244c97b9cd8ea1afffbc1d6d3e6aab906546897d851aa 6da0034021f992ae39977694418a4d8f2fe6b426f54f606a2a089c3896e6eb52 -lib/codeql/rust/elements/internal/UnsafeMetaImpl.qll 38134143aec9d5f48762a1d70330a8899bd3e94265f80b0772e7db3987a7a107 7731646d9a29357c7567a08129d018c4b09982781d8b6cb73d93bcea7f71f0a1 lib/codeql/rust/elements/internal/UseBoundGenericArgImpl.qll 2f90bfd5e43113da1155445bef0334ab84acddef102bd62dfa2ef908717a5d09 dd2fa3c6081d79e1d96360dbdb339128cd944e7b7dc26c449c04f970ee1d7848 lib/codeql/rust/elements/internal/UseBoundGenericArgsConstructor.qll 84d4a959d098fcd1713cb169e15b4945d846121701d2c5709b11e19202c21f2b 93113c92be9bc9f0b8530c308fe482dfeddc7dc827fc44049cecb3eab28df731 -lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll 0f98d47c1e09c46dd3da66a4770181a0caae0512b362faaec997af22bb5f4ce7 1919235e50b9d2fee9bd5d407a0bc023a02dbb04b2662349fad5a8d6cfa98069 lib/codeql/rust/elements/internal/UseConstructor.qll a4f790795e18abc29a50d6fbaa0db64cba781e3259a42cbf0468c24ac66b63e7 2fa288f073ac094a838c11f091def2c790b347b6a1b79407c11b10c73d6bff57 lib/codeql/rust/elements/internal/UseTreeConstructor.qll 3e6e834100fcc7249f8a20f8bd9debe09b705fcf5a0e655537e71ac1c6f7956b cdbc84b8f1b009be1e4a7aaba7f5237823cea62c86b38f1794aad97e3dfcf64b lib/codeql/rust/elements/internal/UseTreeListConstructor.qll 973577da5d7b58eb245f108bd1ae2fecc5645f2795421dedf7687b067a233003 f41e5e3ffcb2a387e5c37f56c0b271e8dc20428b6ff4c63e1ee42fcfa4e67d0a -lib/codeql/rust/elements/internal/UseTreeListImpl.qll a155fbfeb9792d511e1f3331d6756ccff6cca18c7ca4cac0faa7184cbb2e0dd4 0eeb1343b2284c02f9a0f0237267c77857a3a3a0f57df8277437313fde38d1b7 lib/codeql/rust/elements/internal/VariantConstructor.qll 0297d4a9a9b32448d6d6063d308c8d0e7a067d028b9ec97de10a1d659ee2cfdd 6a4bee28b340e97d06b262120fd39ab21717233a5bcc142ba542cb1b456eb952 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/WhereClauseConstructor.qll 6d6f0f0376cf45fac37ea0c7c4345d08718d2a3d6d913e591de1de9e640317c9 ff690f3d4391e5f1fae6e9014365810105e8befe9d6b52a82625994319af9ffd -lib/codeql/rust/elements/internal/WhereClauseImpl.qll 006e330df395183d15896e5f81128e24b8274d849fe45afb5040444e4b764226 ed5e8317b5f33104e5c322588dc400755c8852bbb77ef835177b13af7480fd43 lib/codeql/rust/elements/internal/WherePredConstructor.qll f331c37085792a01159e8c218e9ef827e80e99b7c3d5978b6489808f05bd11f8 179cad3e4c5aaaf27755891694ef3569322fcf34c5290e6af49e5b5e3f8aa732 -lib/codeql/rust/elements/internal/WherePredImpl.qll eabd6553a16165ddb0103602d8cff65c6af22580ea7a0e2beabbf795ffabdb2d 8025d8bd2351ec2de8273225a6e59d46748d7bfd7e53251fa4eb90d5140afd92 lib/codeql/rust/elements/internal/WhileExprConstructor.qll 01eb17d834584b3cba0098d367324d137aacfc60860752d9053ec414180897e7 e5e0999fb48a48ba9b3e09f87d8f44f43cc3d8a276059d9f67e7714a1852b8a5 lib/codeql/rust/elements/internal/WildcardPatConstructor.qll 5980c4e5724f88a8cb91365fc2b65a72a47183d01a37f3ff11dcd2021e612dd9 c015e94953e02dc405f8cdc1f24f7cae6b7c1134d69878e99c6858143fc7ab34 lib/codeql/rust/elements/internal/YeetExprConstructor.qll 7763e1717d3672156587250a093dd21680ad88c8224a815b472e1c9bba18f976 70dd1fd50824902362554c8c6075468060d0abbe3b3335957be335057512a417 -lib/codeql/rust/elements/internal/YeetExprImpl.qll e8924147c3ebe0c32d04c5b33edfd82ae965c32479acfd4429eeab525cf42efb b2debcfa42df901f254c58705a5009825ec153464c9ab4b323aa439e5924e59e lib/codeql/rust/elements/internal/YieldExprConstructor.qll 8cbfa6405acb151ee31ccc7c89336948a597d783e8890e5c3e53853850871712 966f685eb6b9063bc359213323d3ff760b536158ecd17608e7618a3e9adf475f -lib/codeql/rust/elements/internal/YieldExprImpl.qll af184649a348ddd0be16dee9daae307240bf123ace09243950342e9d71ededd9 17df90f67dd51623e8a5715b344ccd8740c8fc415af092469f801b99caacb70d lib/codeql/rust/elements/internal/generated/Abi.qll f5a22afe5596c261b4409395056ce3227b25d67602d51d0b72734d870f614df3 06d1c242ccd31f1cc90212823077e1a7a9e93cd3771a14ebe2f0659c979f3dd1 lib/codeql/rust/elements/internal/generated/Addressable.qll 624c380d385af6563885417d1e8ecd5d9b7abf1435c0ab79a1b9a405387874a3 e2755dc2155d6f2bc0e2d54006da0e62ee359440592db9d6a8b73202ef28e64f lib/codeql/rust/elements/internal/generated/ArgList.qll e41f48258082876a8ceac9107209d94fdd00a62d2e4c632987a01a8394c4aff6 bf1982d14f8cd55fa0c3da2c6aab56fc73b15a3572ffc72d9a94f2c860f8f3b7 @@ -473,16 +406,16 @@ lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll 67a7b0fae04b11 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/AsmClobberAbi.qll cd5b177210a072df598f83b49b891800f6ea4bdc4064b45e4a0853d7076d4d9a 03bd9e78da06333038a5219c00c5b16d2c7396434e85f2fe76179181adf107dc 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/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/AsmOperandNamed.qll d6bfe8314d1e1694c4bb197fbee745a52a5c721997f2b7e72667230b449661c5 9864bfd98d7c52f543af4a36aa7c7530760c67c061fa52be20aa3e5f768cd777 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/AsmOptionsList.qll 98403f62e88f3c01b466e25e836c5eb90c414d21b22cc3ff50c0aba46d440092 4b60c9d657230a9d7275b4fe8c46a5cf9986036cf7aedf9ee2c3d90051ea6054 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 @@ -514,6 +447,7 @@ lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll 7526d83ee9565d7477 lib/codeql/rust/elements/internal/generated/ConstParam.qll 2e24198f636e4932c79f28c324f395ae5f61f713795ed4543e920913898e2815 5abe6d3df395c679c28a7720479bad455c53bc5ade9133f1ff113ea54dc66c11 lib/codeql/rust/elements/internal/generated/ContinueExpr.qll e2010feb14fb6edeb83a991d9357e50edb770172ddfde2e8670b0d3e68169f28 48d09d661e1443002f6d22b8710e22c9c36d9daa9cde09c6366a61e960d717cb lib/codeql/rust/elements/internal/generated/Crate.qll 37f3760d7c0c1c3ca809d07daf7215a8eae6053eda05e88ed7db6e07f4db0781 649a3d7cd7ee99f95f8a4d3d3c41ea2fa848ce7d8415ccbac62977dfc9a49d35 +lib/codeql/rust/elements/internal/generated/DerefPat.qll fba6bfa4be64247c5d2786d9a65e660498c81a08f1e14cac7347f87fa9d0dfe9 e4cc0922c30a498e6cd4e0eee7a76be4d5a2abaa5a6676cf942823ec7be1d2b8 lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll b2e0e728b6708923b862d9d8d6104d13f572da17e393ec1485b8465e4bfdc206 4a87ea9669c55c4905ce4e781b680f674989591b0cb56af1e9fa1058c13300b3 lib/codeql/rust/elements/internal/generated/Element.qll d56d22c060fa929464f837b1e16475a4a2a2e42d68235a014f7369bcb48431db 0e48426ca72179f675ac29aa49bbaadb8b1d27b08ad5cbc72ec5a005c291848e lib/codeql/rust/elements/internal/generated/Enum.qll 3ed69005ab7cf68745a67cc9891bd68a83f6ab927febf077de9e4092cb373b0b 604fd03d1c46884b3c93e5bff3951ec41593320e1f7382c1a7143a64063827bc @@ -531,8 +465,7 @@ lib/codeql/rust/elements/internal/generated/ForBinder.qll 7be6b8e3934db8cd4ac326 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/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/FormatArgsArg.qll c762a4af8609472e285dd1b1aec8251421aec49f8d0e5ce9df2cc5e2722326f8 c8c226b94b32447634b445c62bd9af7e11b93a706f8fa35d2de4fda3ce951926 lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll 8aed8715a27d3af3de56ded4610c6792a25216b1544eb7e57c8b0b37c14bd9c1 590a2b0063d2ecd00bbbd1ce29603c8fd69972e34e6daddf309c915ce4ec1375 lib/codeql/rust/elements/internal/generated/FormatArgument.qll cd05153276e63e689c95d5537fbc7d892615f62e110323759ef02e23a7587407 be2a4531b498f01625effa4c631d51ee8857698b00cfb829074120a0f2696d57 lib/codeql/rust/elements/internal/generated/FormatTemplateVariableAccess.qll a6175214fad445df9234b3ee9bf5147da75baf82473fb8d384b455e3add0dac1 a928db0ff126b2e54a18f5c488232abd1bd6c5eda24591d3c3bb80c6ee71c770 @@ -544,7 +477,9 @@ lib/codeql/rust/elements/internal/generated/GenericParamList.qll b18fa5fd435d948 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/ImplRestriction.qll 934b9c66f3fb3bbebc5b0a5f748fd33d46b08dc2ff77411ca46c2b5a6183db2d ec2c695d23cfe4ac78d372996b7269b152bd72a7747a723c203dad8304d583ba lib/codeql/rust/elements/internal/generated/ImplTraitTypeRepr.qll e376a2e34ba51df403d42b02afe25140543e3e53aaf04b9ea118eb575acb4644 dc3a7e3eac758423c90a9803cc40dfdf53818bd62ee894982cd636f6b1596dfc +lib/codeql/rust/elements/internal/generated/IncludeBytesExpr.qll 39383a3b29f01c5e721f8db75fa78842c32ed823a3523709d8facaaaf6f490ee 2ccb4c8d1f00b0bdb881e18d4712effc34ac806d7eb6432fcf86191e19a294e3 lib/codeql/rust/elements/internal/generated/IndexExpr.qll cf951fc40f6690e966b4dc78fa9a6221aa5c6cade44759dcb52254f799292d11 1572e71918cc4e0b7e028331b6d98c9db23100a3646cd3874d1915e06ab6211d lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll 4f101c1cb1278e919f9195cac4aa0c768e304c1881394b500874e7627e62d6c4 dca3f85d0a78ecc8bf030b4324f0d219ffff60784a2ecf565a4257e888dea0ff lib/codeql/rust/elements/internal/generated/Item.qll 03077c9d2f3200ebbc5df5d31f7d9b78a3ae25957ac46899a19a93684b2d7306 6492e341b9d9270c0181da0a5330f588238ced81657041ad1ad343db2bdf210b @@ -578,10 +513,12 @@ lib/codeql/rust/elements/internal/generated/Meta.qll 5c3358c737d504dacfa3227b80c 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/MutRestriction.qll ab507ff1a1cdd04f3b5deab8b52b41aa520d7a20bf94ec3fe53644eb8524e7d4 0396ab58b867a53c1870fb12d1c203a741927defc0d08ae10ef7a93f48e8cedf lib/codeql/rust/elements/internal/generated/Name.qll e6bd6240a051383a52b21ab539bc204ce7bcd51a1a4379e497dff008d4eef5b4 578a3b45e70f519d57b3e3a3450f6272716c849940daee49889717c7aaa85fc9 lib/codeql/rust/elements/internal/generated/NameRef.qll 090c15ed6c44fc4f1a7236215f42e16921912d3030119ac22bc7ffe2dcdb4ba8 b61cc486e6764272c4e8377523bf043d0beae4926606dbcb48f8205c6a0b9a90 lib/codeql/rust/elements/internal/generated/NamedCrate.qll e190dd742751ea2de914d0750c93fcad3100d3ebb4e3f47f6adc0a7fa3e7932c 755ead62328df8a4496dc4ad6fea7243ab6144138ed62d7368fa53737eef5819 lib/codeql/rust/elements/internal/generated/NeverTypeRepr.qll 4f13c6e850814a4759fdb5fca83a50e4094c27edee4d2e74fe209b10d8fb01c3 231f39610e56f68f48c70ca8a17a6f447458e83218e529fff147ed039516a2f7 +lib/codeql/rust/elements/internal/generated/NotNull.qll 437dd90a15cc2518f26489d4251fc0de31646e7735a3463ec51983f39a33c3b6 78b1051f7ec1d82c36b5c825c4b9c3c2b8ad9563542e5e4b7d2f0292455fb74a lib/codeql/rust/elements/internal/generated/OffsetOfExpr.qll c86eecd11345a807571542e220ced8ccc8bb78f81de61fff6fc6b23ff379cd12 76a692d3ad5e26751e574c7d9b13cf698d471e1783f53a312e808c0b21a110ab lib/codeql/rust/elements/internal/generated/OrPat.qll 0dc6bd6ada8d11b7f708f71c8208fc2c28629e9c265c3df3c2dc9bea30de5afa 892119fc1de2e3315489203c56ee3ed3df8b9806e927ee58aa6083e5b2156dab lib/codeql/rust/elements/internal/generated/Param.qll 19f03396897c1b7b494df2d0e9677c1a2fc6d4ae190e64e5be51145aba9de2e2 3d63116e70457226ea7488a9f6ed9c7cea3233b0e5cab443db9566c17b125e80 @@ -590,7 +527,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47e lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb lib/codeql/rust/elements/internal/generated/ParenPat.qll 24f9dc7fce75827d6fddb856cd48f80168143151b27295c0bab6db5a06567a09 ebadbc6f5498e9ed754b39893ce0763840409a0721036a25b56e1ead7dcc09aa lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 03f5c5b96a37adeb845352d7fcea3e098da9050e534972d14ac0f70d60a2d776 ed3d6e5d02086523087adebce4e89e35461eb95f2a66d1d4100fe23fc691b126 -lib/codeql/rust/elements/internal/generated/ParentChild.qll 824b272f2fa77353b0d67ea66b13292dd14091f1a68411bb4be506dcbad0226a b9d7fac552163dd522b5a0ff19a11b035134a58f236415db6e3d599c6dbe187e +lib/codeql/rust/elements/internal/generated/ParentChild.qll 491b2adad685733cae41b4e918e850718074a14e0f179b3debbe9424c927a5aa 4e851e1d327156fcad247dae87adc091fd0e2f7ff19c6559612165c16d961beb lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll d901fdc8142a5b8847cc98fc2afcfd16428b8ace4fbffb457e761b5fd3901a77 5dbb0aea5a13f937da666ccb042494af8f11e776ade1459d16b70a4dd193f9fb lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd @@ -601,12 +538,13 @@ lib/codeql/rust/elements/internal/generated/PathMeta.qll 42cf084a78acb656a86a6a9 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/PatternTypeRepr.qll 081f81ecb630be1a437711c028887f8e2aee017a8dd76c5ae4dac4e04b319b0b 5a4125625847271a7cbc5af4a0cb85040af768600ff762fa53c56d3fdbb99730 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/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/Raw.qll b797442c8c4ef094437c7e20c2d580a96b272ea6752a496213c8caaf72cabe6a 433002df28dc5ffae8485ddd0bac85e47587e088e730f5ccf34152eceb4d325c lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b @@ -626,21 +564,21 @@ lib/codeql/rust/elements/internal/generated/Struct.qll 56775b98f793c108bd0eb8f35 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/StructField.qll cdb78ca654a459204a8f471f8e1a79a08186db93177289ab6dd4a8864fb88cf3 d0ddbe4e9e570721796379b7e090bec6301f50b0ed26de06ff1f7a4e1a9eb70f lib/codeql/rust/elements/internal/generated/StructFieldList.qll 5da528a51a6a5db9d245772aec462d1767bcc7341e5bedd1dc1bbedd3e4ab920 dac4cee3280eef1136ffc7fbc11b84b754eb6290fc159c6397a39ae91ceeaa13 lib/codeql/rust/elements/internal/generated/StructPat.qll c76fa005c2fd0448a8803233e1e8818c4123301eb66ac5cf69d0b9eaafc61e98 6e0dffccdce24bca20e87d5ba0f0995c9a1ae8983283e71e7dbfcf6fffc67a58 lib/codeql/rust/elements/internal/generated/StructPatField.qll 5b5c7302dbc4a902ca8e69ff31875c867e295a16a626ba3cef29cd0aa248f179 4e192a0df79947f5cb0d47fdbbba7986137a6a40a1be92ae119873e2fad67edf lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll 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/Synth.qll c753ec12f68833536dfcc467357f6bb6e0b039d2ab50683a4669432cbe20cbb2 e83329642325e05574ce4e82e3fc68e1a39b23f02f19a4cd972ca195f861f7eb +lib/codeql/rust/elements/internal/generated/SynthConstructors.qll d8c1962dcb7c6ecfdb15671c34bbb30a139bae017fd3b3186b7df41d02060f7e d8c1962dcb7c6ecfdb15671c34bbb30a139bae017fd3b3186b7df41d02060f7e 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/Trait.qll 762d4a2aa0ca2b1384b598201e2964287fce1c0de5475cf493e52de3267a6c55 affd77f6a84c9589c18ae3e3a0e51778e4e9d247f2b9b34761ba7e12502a14b1 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/TupleField.qll b23d90aa02d687d8a2f498fc30d6156f277a08261ae7f790c5ceda059604140c f1f5c7f28334dbd718ae6de27414e01b501dbba0d87c99041cf092a44da243dd 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/TupleStructPat.qll 6539d0edbdc16e7df849514d51980d4cd1a2c9cbb58ca9e5273851f96df4eb36 45a13bae5220d5737cbd04713a17af5b33d8bb4cfdf17ddd64b298ab0c1eea24 @@ -664,28 +602,29 @@ lib/codeql/rust/elements/internal/generated/UseTree.qll 3d7cbcc8ae76068b8f660c7d 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/Visibility.qll c6c3099cb563c010e18012772c57bea636967e30f0f90b026f744441fb4c9263 f0db2927498fd5900eedacaaec5f3f538829c1f46306b593ff95699fa6535f68 +lib/codeql/rust/elements/internal/generated/VisibilityInner.qll 3e853aed43f32e216c67716da5ff4d910e4e48e4f017067a61041ce91a7eee9d 6a3b669762e091c7e12c19a081847475814ce4e7c52fb41ed1786cec36344356 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/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.qll e5ae502dca38c314eb5681d8b80b837cb1b09e59f1ffcccbe1b377658418e496 e5ae502dca38c314eb5681d8b80b837cb1b09e59f1ffcccbe1b377658418e496 test/extractor-tests/generated/Abi/Abi.ql 086ed104ab1a7e7fe5c1ed29e03f1719a797c7096c738868bf6ebe872ab8fdaa fe23fe67ab0d9201e1177ea3f844b18ed428e13e3ce77381bf2b6910adfa3a0e test/extractor-tests/generated/ArgList/ArgList.ql da97b5b25418b2aa8cb8df793f48870c89fa00759cdade8ddba60d7f1f4bbc01 acfd5d2caf67282ad2d57b961068472100482d0f770a52a3c00214c647d18c75 test/extractor-tests/generated/ArrayListExpr/ArrayListExpr.ql 42b365276aa43e2cad588338463542d3ce1dd0db3a428621554584b07a1431d5 08a66a8b69af35ee3bc64c35c453a19a6c9881cc6cc7e65275d1fff056121270 test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr.ql 339629d69e2d7db153e2c738d70d2df33f395ae2377f07eb247132ede87b9899 07e0611667c09456241aabf80dc420fe1f5c13b1bce324da92e6b18d250c3896 test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.ql b262300235ab5bf4fe7712c0208390c7e876413a37a433340fbc078318233e83 68cfb18e8fb73b53cf8a8e73e8bf5e7ba11f32ca6b4695a64ebab51ac7d58d1b -test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql adfcfcdc6ac2a9a4849ea592e37da4221b6279cf2ea1112d32b6c89fda33e85e 7438490536e27b7173dec731f6925531a0e3fa839639c97a53905ba72d7efbe5 +test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql 11cfb43272f04e757366f6095713857db802d8bba66a81186de9885dfbfc21e9 28fc0627dcb66ac621b78532b8f092e5be7c9f7cea7b26aea25f0360e0dfc1e3 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/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 b93707b7993b75fd0305fb7e09d6c49ebdd088675a85db8697f0a2248e996194 1da85511e7325cabc66aee7a3de5eab9f1d7a146023de6efa77855356e700ff1 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 43561fdd414a84b419f86d919db557952b4155e943f6fdf8f99e63ccad2a4dcf 67a6ca4403c970a134aabe6ed12d27d4766670d55d7c59dbde38c513f559ecd4 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 @@ -711,6 +650,7 @@ test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.ql e2198f9ef913f7ecb9 test/extractor-tests/generated/ConstParam/ConstParam.ql 6facb2402e1cbf23d836f619ef68e2d8496b3c0c438e71266de24d8690852468 211ed6f7384f86d849f559410b2ac09da3df278bdeea9e77c4d9c26a727a6990 test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql 58b5046a4da06a4cd2d942720603313126888b2249b218bef6f7c44ca469ccfa eeb84a04deb4c4496b7f9b38798cc7fdc179a486c8beaa0b33bf87e7f9482b1a test/extractor-tests/generated/Crate/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 +test/extractor-tests/generated/DerefPat/DerefPat.ql 6e2d15d74675242430b923155a79162d97b526c2642dc81485d1c34d883881a9 c102390dc801bda5816506e00a295ec10a5866233c4a980735e42cc3cefd6d07 test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.ql ff54195d2e09424faaac4e145a40208bf0e57acc57dfa8247b3751862a317c4b 583d5b98aa31a9af6ad73df000ca529f57f67aa6daaa50ca5673a56eb57bf507 test/extractor-tests/generated/Enum/Enum.ql 9a612c818952e867e2665d8c919905d563bb76191f3f522370c7344863589205 c32cf1973082f5d519e3eb04fca0309b3dd9637cf34e58c10a8e34cd9fe36d2d test/extractor-tests/generated/ExprStmt/ExprStmt.ql 7c62a97f7f910ae6e0e9aff7fdd78b369d21257ccab52afe6307ddea2e15dad1 2d32a366c4acbea3136ff1f9f9dadf76b148f82ad1d7170f02efd977d8a07ae9 @@ -722,9 +662,8 @@ test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.ql 1501730f1e02e9d22b test/extractor-tests/generated/ForBinder/ForBinder.ql c95fd006eaddb9535eda0d527d71cdd5d3745fe464fd809a8d58b8c4dfc8790e 1d8b38059b8a25965eab9a8a1286384aa994d7cac7414b70b63c6a3d6bcf3c39 test/extractor-tests/generated/ForExpr/ForExpr.ql 3bac38bf33e140ae9f88371ec90409f7de867e39cdea46f02b15519b236b57cb aade1baf6e6081b3b9bce5b7e95fe4b7ffe00ea9450fd6e1d6692ad97cf93fe9 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/FormatArgsArg.ql 5abcb565dcd2822e2ea142d19b8c92194ee17c71c3db7595248690034559d174 1ffa743fc678701ffeefff6c14c1414bb9158e6756f32380dd590ff44b19ca5a test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql 243c2f9d830f1eae915749e81ac78d3c140280385b0002d10fcc4d2feaf14711 72b90a99a8b1c16baf1e254e1e3463c3ce5409624a2a90829122717d4e5a2b74 test/extractor-tests/generated/FormatArgsExpr/FormatArgument.ql 0a345eb48dba8e535d12a00e88008e71b3ce692fbf8f9686c8885e158635dffe eab1f230fd572474a3f304f97d05bbf4a004c52773aaf2d34f999192244c0b80 test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql 24108cdc54feb77c24bb7894744e36e374f0c03d46d6e6c3fcb2012b1ad117f6 05a6b6f51029ee1a15039aa9d738bb1fd7145148f1aad790198fba832572c719 @@ -734,7 +673,9 @@ test/extractor-tests/generated/GenericParamList/GenericParamList.ql 206f270690f5 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/ImplRestriction/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.ql 311c6c1e18bd74fbcd367f940d2cf91777eaba6b3d6307149beb529216d086fb 16c7c81618d7f49da30b4f026dcacfb23ed130dbfcfa19b5cb44dc6e15101401 +test/extractor-tests/generated/IncludeBytesExpr/IncludeBytesExpr.ql 88ce15de29b08d5a09791b7bace113d0a742a9dc80f8e677289fa93f68f90ab5 e2315f877371632c7c606ffec092dbb4dba2a5c8ed5b898ba049d1d5d34e3665 test/extractor-tests/generated/IndexExpr/IndexExpr.ql ecfca80175a78b633bf41684a0f8f5eebe0b8a23f8de9ff27142936687711263 27d4832911f7272376a199550d57d8488e75e0eeeeb7abbfb3b135350a30d277 test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.ql 6ba01a9e229e7dfdb2878a0bdbeb6c0888c4a068984b820e7a48d4b84995daa2 7120cafd267e956dbb4af5e19d57237275d334ffe5ff0fb635d65d309381aa46 test/extractor-tests/generated/ItemList/ItemList.ql e29302a9212b07fdaf93618852be30adfac64b292e9a0ddbf63addb803daaa98 7e69a78b0f58ef9344892113799092149024c1352b0965a6326d8a45cd44771a @@ -762,9 +703,11 @@ test/extractor-tests/generated/MatchExpr/MatchExpr.ql b75a5936401bb5ca38686f1413 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/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/NotNull/NotNull.ql d79c3007161f3296a4e0516e3edf8e33152a6e359bc241b0f532b0058442e59b 3c991600d3fe64df36e0c00d38e4e31a1d796eec6ad47e2d34a8619b7e9c7afc test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql 851d84073f4a14cef24ce945a099bc43b22381fc21672ba9ba424623d66d9e0e b3ca3309da0054501dc49f83b9e1b51c155966a14504521565ea980cf1600f55 test/extractor-tests/generated/OrPat/OrPat.ql 8742e1708da0bcc172c8cc637082672c92a136aa50bb2f0ef928387337aefa3e 1901c223502e8cc046c233a10d923226373bad0837264e2b837fd549929020e3 test/extractor-tests/generated/Param/Param.ql de90709cbd61e1852c857ffb6cedd17818464c93bb7bdc92c900ee04f4d2a27c a105ee30716345987989d48c4fa6194c34741fc48528515aeca673662b5259cb @@ -779,6 +722,7 @@ test/extractor-tests/generated/Path/PathPat.ql 8a6a759f4bbf4fa9c23fd235ce4d63f04 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/PatternTypeRepr/PatternTypeRepr.ql ada52e0ac5a61244cec32e185a968eaf2aa7c3237126d9cd57646cab0d63d950 c8169395b50236ba21fb7703206a57a98c3919a68f75c792cf387b14351c2018 test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql 63e9dbae0d0b46d5e9d60c313e408c4c7ee1a93c5a26fe4c01a632911de961d0 09fcc28bb22553356aebf9ea93811703e5404b88022be8dab61ac81d3b187b75 test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.ql d9289bfe1e72d9560b3878e4557f8cfda578ef7bce67eb29d7320921c0ba46a5 f3ea108aa25635bffa7673bb66b2581ce246d3aae86edf878c6f1abca2493c16 test/extractor-tests/generated/RangeExpr/RangeExpr.ql c9776706d933606d1463bb08ed76457ac03a9558f6dac0218ef2012bc5e8e48f 77cafee86abc2680e1f9c925fbe664c05ba1b9a2533b1873242ef01dde1ce308 @@ -801,7 +745,7 @@ test/extractor-tests/generated/Struct/Struct.ql 57e837e3c665d24870d99492c8874441 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/StructField/StructField.ql 2698b1066822b706ccd46a9d560f6219c5c71d1ff27023a2e54bce3ac4371b5a f7374cf59e6d369ab27b106d3e1263de60ee540138b172e96d9fc4a9420a04b5 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 @@ -809,11 +753,11 @@ test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.ql a3ba3e99 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/Trait.ql b0da6d9a49de4a2a08140a8bbf0f66bb44631dc3c64e3c16482e44d5b0485c08 ed9c175f2751d3cc602d7cf6b781ea301a0817ab381d7f43b03f3398416caa44 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/TupleField/TupleField.ql 8fed1744aaa3b63bc9800ac2b1e3d6f118569a27b447520b0af6c698580bced5 f633952b1e3eaf982443af94b41d2f8d39d40c4ceacd7d3828dbc89559537262 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 @@ -832,7 +776,8 @@ test/extractor-tests/generated/UseTree/UseTree.ql 3c2bc924b54b9af5c95784023d4098 test/extractor-tests/generated/UseTreeList/UseTreeList.ql faff7bfc060d5b0a922f38b37bf586596566186f704c9921651785580e86d684 81e5b90edeef0d3883547844a030e72b555d714de1ed8dded1c22a3772b4449a test/extractor-tests/generated/Variant/Variant.ql 0de458e2d04e40e9a0c036e423d05af3617f4423b967e287f0800ccffd345633 921a8ca71390812f174c5220d54dfcfc7105e57ba3c301f5c86301a19d089bda 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 diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index 2ae7fd51d450..34bded4d4de9 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -49,6 +49,7 @@ /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/DynTraitTypeRepr.qll linguist-generated /lib/codeql/rust/elements/Element.qll linguist-generated /lib/codeql/rust/elements/Enum.qll linguist-generated @@ -66,7 +67,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 +78,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 +114,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 +137,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 +198,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 @@ -200,46 +206,27 @@ /lib/codeql/rust/elements/YeetExpr.qll linguist-generated /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/ArgListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ArgListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ArrayExprInternal.qll linguist-generated /lib/codeql/rust/elements/internal/ArrayExprInternalConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ArrayTypeReprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmClobberAbiConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmConstConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmConstImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmDirSpecConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmLabelConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmLabelImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmOperandExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmOperandImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmOperandNamedConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmOptionConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmOptionImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmOptionsListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmPieceImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmRegOperandConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmRegSpecConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmSymConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AsmSymImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AssocItemListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AssocItemListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AssocTypeArgConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AttrConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AttrImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AwaitExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/BecomeExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/BinaryExprConstructor.qll linguist-generated @@ -249,51 +236,36 @@ /lib/codeql/rust/elements/internal/CallExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CastExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CfgAtomConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/CfgAtomImpl.qll linguist-generated /lib/codeql/rust/elements/internal/CfgAttrMetaConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll linguist-generated /lib/codeql/rust/elements/internal/CfgCompositeConstructor.qll linguist-generated -/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/CfgPredicateImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ClosureExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CommentConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ConstArgConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ConstArgImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ConstBlockPatConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ConstConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ConstParamConstructor.qll linguist-generated -/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/DynTraitTypeReprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/EnumConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ExprStmtConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ExprStmtImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ExternBlockConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ExternBlockImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ExternCrateConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ExternCrateImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ExternItemImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ExternItemListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ExternItemListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ExtractorStep.qll linguist-generated /lib/codeql/rust/elements/internal/ExtractorStepConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/FieldExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/FieldListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/FnPtrTypeReprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/FnPtrTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ForBinderConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ForExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ForTypeReprConstructor.qll linguist-generated -/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,57 +275,47 @@ /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/ImplTraitTypeReprConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/IncludeBytesExprConstructor.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 -/lib/codeql/rust/elements/internal/ItemListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/KeyValueMetaConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LabelConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LetElseConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LetExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LetStmtConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LifetimeArgConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/LifetimeArgImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LifetimeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LifetimeParamConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/LifetimeParamImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LiteralExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LiteralPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LoopExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LoopingExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MacroCallConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MacroDefConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/MacroDefImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MacroExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/MacroExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MacroItemsConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/MacroItemsImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MacroPatConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/MacroPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MacroRulesConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/MacroRulesImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MacroTypeReprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MatchArmConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MatchArmListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/MatchArmListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MatchExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MatchGuardConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/MatchGuardImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MethodCallExprConstructor.qll linguist-generated /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/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/OffsetOfExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/OffsetOfExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/OrPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ParamConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ParamListConstructor.qll linguist-generated @@ -361,42 +323,31 @@ /lib/codeql/rust/elements/internal/ParenPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ParenTypeReprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ParenthesizedArgListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PathAstNodeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PathConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathExprBaseImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PathExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathMetaConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/PathMetaImpl.qll linguist-generated /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/PrefixExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PtrTypeReprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RangeExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RangePatConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/RangePatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RefExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RefPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RefTypeReprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/RefTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RenameConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/RenameImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RestPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RetTypeReprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ReturnExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ReturnTypeSyntaxConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll linguist-generated /lib/codeql/rust/elements/internal/SelfParamConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/SelfParamImpl.qll linguist-generated /lib/codeql/rust/elements/internal/SlicePatConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/SlicePatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/SliceTypeReprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/SourceFileConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/SourceFileImpl.qll linguist-generated /lib/codeql/rust/elements/internal/StaticConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/StmtImpl.qll linguist-generated /lib/codeql/rust/elements/internal/StmtListConstructor.qll linguist-generated @@ -404,36 +355,25 @@ /lib/codeql/rust/elements/internal/StructExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/StructExprFieldConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/StructExprFieldListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/StructFieldConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/StructFieldListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/StructFieldListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/StructPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/StructPatFieldConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/StructPatFieldListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TokenImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TokenTreeConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/TokenTreeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TokenTreeMetaConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TraitConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/TryBlockModifierConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/TryBlockModifierImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TryExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/TryExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TupleExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/TupleExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TupleFieldConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/TupleFieldListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/TupleFieldListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TuplePatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/TupleStructPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/TupleTypeReprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TypeAliasConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/TypeArgConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/TypeArgImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TypeBoundConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/TypeBoundListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/TypeItemImpl.qll linguist-generated @@ -445,28 +385,21 @@ /lib/codeql/rust/elements/internal/UnimplementedImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UnionConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/UnsafeMetaConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/UnsafeMetaImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UseBoundGenericArgImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UseBoundGenericArgsConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UseConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/UseTreeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/UseTreeListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/UseTreeListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/VariantConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/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/WhereClauseConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/WhereClauseImpl.qll linguist-generated /lib/codeql/rust/elements/internal/WherePredConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/WherePredImpl.qll linguist-generated /lib/codeql/rust/elements/internal/WhileExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/WildcardPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/YeetExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/YeetExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/YieldExprConstructor.qll linguist-generated -/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/ArgList.qll linguist-generated @@ -516,6 +449,7 @@ /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/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 +468,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 +479,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 +515,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 +540,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 +605,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 @@ -713,6 +652,7 @@ /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/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 +664,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 +675,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 +705,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 +724,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 +779,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/integration-tests/conftest.py b/rust/ql/integration-tests/conftest.py index 578a81a849a9..3b1f26ee84c8 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.97.0 --profile minimal --component rust-src" + ) + + @pytest.fixture(params=[2018, 2021, 2024]) def rust_edition(request): return request.param diff --git a/rust/ql/lib/change-notes/2026-08-14-rust-analyzer-0.0.347.md b/rust/ql/lib/change-notes/2026-08-14-rust-analyzer-0.0.347.md new file mode 100644 index 000000000000..9e03da0fa39c --- /dev/null +++ b/rust/ql/lib/change-notes/2026-08-14-rust-analyzer-0.0.347.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* 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/2026-08-19-rust-core-fmt-flow-models.md b/rust/ql/lib/change-notes/2026-08-19-rust-core-fmt-flow-models.md new file mode 100644 index 000000000000..87b8b08ed067 --- /dev/null +++ b/rust/ql/lib/change-notes/2026-08-19-rust-core-fmt-flow-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added data-flow models for `core::fmt::Write`. This may improve detection of vulnerabilities where tainted data is written to a formatted output buffer. diff --git a/rust/ql/lib/change-notes/2026-09-07-self-path-trait.md b/rust/ql/lib/change-notes/2026-09-07-self-path-trait.md new file mode 100644 index 000000000000..ff7b0f2d350d --- /dev/null +++ b/rust/ql/lib/change-notes/2026-09-07-self-path-trait.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Fix path resolution for `m::{self}` paths where `m` is a trait. \ No newline at end of file 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..3f09a822a44c 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll @@ -874,6 +874,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() } } @@ -1023,6 +1063,8 @@ module MakeCfgNodes Input> { none() or child = this.getExpr() + or + child = this.getName() } } @@ -1041,26 +1083,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 { @@ -1338,6 +1382,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() @@ -2094,6 +2157,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() } } @@ -3511,6 +3596,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 +3656,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/elements.qll b/rust/ql/lib/codeql/rust/elements.qll index fdfe2c0cacf0..004acff69158 100644 --- a/rust/ql/lib/codeql/rust/elements.qll +++ b/rust/ql/lib/codeql/rust/elements.qll @@ -52,6 +52,7 @@ 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.DynTraitTypeRepr import codeql.rust.elements.Element import codeql.rust.elements.Enum @@ -69,7 +70,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 +81,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 +117,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 +140,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 +201,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/AsmClobberAbi.qll b/rust/ql/lib/codeql/rust/elements/AsmClobberAbi.qll index 253dcdfc9fa4..ac1227f3058a 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmClobberAbi.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmClobberAbi.qll @@ -5,6 +5,7 @@ private import internal.AsmClobberAbiImpl import codeql.rust.elements.AsmPiece +import codeql.rust.elements.Attr /** * A clobbered ABI in an inline assembly block. diff --git a/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll b/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll index cb54a585539a..fdcf91eb1253 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll @@ -6,6 +6,7 @@ private import internal.AsmOperandNamedImpl import codeql.rust.elements.AsmOperand import codeql.rust.elements.AsmPiece +import codeql.rust.elements.Attr 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..56ce0383ef91 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmOptionsList.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmOptionsList.qll @@ -6,6 +6,7 @@ private import internal.AsmOptionsListImpl import codeql.rust.elements.AsmOption import codeql.rust.elements.AsmPiece +import codeql.rust.elements.Attr /** * A list of options in an inline assembly block. 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/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/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/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/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/StructField.qll b/rust/ql/lib/codeql/rust/elements/StructField.qll index d02d9418049c..ce9add1c1f10 100644 --- a/rust/ql/lib/codeql/rust/elements/StructField.qll +++ b/rust/ql/lib/codeql/rust/elements/StructField.qll @@ -7,6 +7,7 @@ private import internal.StructFieldImpl 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/Trait.qll b/rust/ql/lib/codeql/rust/elements/Trait.qll index ee1166922ccd..f4d5c3ebeb5e 100644 --- a/rust/ql/lib/codeql/rust/elements/Trait.qll +++ b/rust/ql/lib/codeql/rust/elements/Trait.qll @@ -7,6 +7,7 @@ private import internal.TraitImpl 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/TupleField.qll b/rust/ql/lib/codeql/rust/elements/TupleField.qll index 3e63f377aeb6..333dc1f44a4c 100644 --- a/rust/ql/lib/codeql/rust/elements/TupleField.qll +++ b/rust/ql/lib/codeql/rust/elements/TupleField.qll @@ -6,6 +6,7 @@ private import internal.TupleFieldImpl 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/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/internal/AbiImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AbiImpl.qll index 2534d71e610c..adc08fc02304 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AbiImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AbiImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Abi`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.Abi * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An ABI specification for an extern function or block. * @@ -21,5 +21,7 @@ module Impl { * // ^^^ * ``` */ - class Abi extends Generated::Abi { } + class Abi extends Generated::Abi { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ArgListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ArgListImpl.qll index f5fd9a066a78..1816402bf14e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ArgListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ArgListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ArgList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ArgList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of arguments in a function or method call. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^^ * ``` */ - class ArgList extends Generated::ArgList { } + class ArgList extends Generated::ArgList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll index df972e84525d..174417b1dab1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ArrayExprInternal`. * @@ -12,5 +11,7 @@ private import codeql.rust.elements.internal.generated.ArrayExprInternal * be referenced directly. */ module Impl { - class ArrayExprInternal extends Generated::ArrayExprInternal { } + class ArrayExprInternal extends Generated::ArrayExprInternal { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll index cb72de9b87eb..76f2748ee40b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ArrayTypeRepr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ArrayTypeRepr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An array type representation. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^ * ``` */ - class ArrayTypeRepr extends Generated::ArrayTypeRepr { } + class ArrayTypeRepr extends Generated::ArrayTypeRepr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll index aa8a49e0fa24..3b0e4bb2917d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmClobberAbi`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmClobberAbi * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A clobbered ABI in an inline assembly block. * @@ -22,5 +22,7 @@ module Impl { * // ^^^^^^^^^^^^^^^^ * ``` */ - class AsmClobberAbi extends Generated::AsmClobberAbi { } + class AsmClobberAbi extends Generated::AsmClobberAbi { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmConstImpl.qll index 2c66fc52a3fc..d753838d8135 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmConstImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmConst`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmConst * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A constant operand in an inline assembly block. * @@ -22,5 +22,7 @@ module Impl { * // ^^^^^^^ * ``` */ - class AsmConst extends Generated::AsmConst { } + class AsmConst extends Generated::AsmConst { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll index d9c284eca28c..379d1aba0426 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmDirSpec`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmDirSpec * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An inline assembly direction specifier. * @@ -22,5 +22,7 @@ module Impl { * // ^^^ ^^ * ``` */ - class AsmDirSpec extends Generated::AsmDirSpec { } + class AsmDirSpec extends Generated::AsmDirSpec { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmExprImpl.qll index 338f4772a53e..1f281d87c3d5 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An inline assembly expression. For example: * ```rust @@ -21,5 +21,7 @@ module Impl { * } * ``` */ - class AsmExpr extends Generated::AsmExpr { } + class AsmExpr extends Generated::AsmExpr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmLabelImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmLabelImpl.qll index ee89b6cb27d5..bc681076f5db 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmLabelImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmLabelImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmLabel`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmLabel * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A label in an inline assembly block. * @@ -25,5 +25,7 @@ module Impl { * ); * ``` */ - class AsmLabel extends Generated::AsmLabel { } + class AsmLabel extends Generated::AsmLabel { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll index ee0db41767aa..a3295686857a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmOperandExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmOperandExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An operand expression in an inline assembly block. * @@ -22,5 +22,7 @@ module Impl { * // ^ ^ * ``` */ - class AsmOperandExpr extends Generated::AsmOperandExpr { } + class AsmOperandExpr extends Generated::AsmOperandExpr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll index dd45bcc05a9a..522ce7ed07ce 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmOperandNamed`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmOperandNamed * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A named operand in an inline assembly block. * @@ -22,5 +22,7 @@ module Impl { * // ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ * ``` */ - class AsmOperandNamed extends Generated::AsmOperandNamed { } + class AsmOperandNamed extends Generated::AsmOperandNamed { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmOptionImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmOptionImpl.qll index 60d56d225810..10973c0e0d0d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmOptionImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmOptionImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmOption`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmOption * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An option in an inline assembly block. * @@ -22,5 +22,7 @@ module Impl { * // ^^^^^^^^^^^^^^^^ * ``` */ - class AsmOption extends Generated::AsmOption { } + class AsmOption extends Generated::AsmOption { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll index ca8e80f82ecc..47ef16b26a06 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmOptionsList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmOptionsList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of options in an inline assembly block. * @@ -22,5 +22,7 @@ module Impl { * // ^^^^^^^^^^^^^^^^ * ``` */ - class AsmOptionsList extends Generated::AsmOptionsList { } + class AsmOptionsList extends Generated::AsmOptionsList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll index d3d6b24c15a3..810b37964e73 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmRegOperand`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmRegOperand * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A register operand in an inline assembly block. * @@ -22,5 +22,7 @@ module Impl { * // ^ ^ * ``` */ - class AsmRegOperand extends Generated::AsmRegOperand { } + class AsmRegOperand extends Generated::AsmRegOperand { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll index 24798bae93c8..563bdc80fe82 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmRegSpec`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmRegSpec * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A register specification in an inline assembly block. * @@ -22,5 +22,7 @@ module Impl { * // ^^^ ^^^ * ``` */ - class AsmRegSpec extends Generated::AsmRegSpec { } + class AsmRegSpec extends Generated::AsmRegSpec { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmSymImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmSymImpl.qll index ad118f38d1c5..c7d25e88a974 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmSymImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmSymImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AsmSym`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AsmSym * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A symbol operand in an inline assembly block. * @@ -22,5 +22,7 @@ module Impl { * // ^^^^^^^^^^^^^^^^^^^^^^ * ``` */ - class AsmSym extends Generated::AsmSym { } + class AsmSym extends Generated::AsmSym { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AssocItemListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AssocItemListImpl.qll index f68c9e5fbe3f..6b492d9db722 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AssocItemListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AssocItemListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AssocItemList`. * @@ -12,8 +11,11 @@ private import codeql.rust.elements.internal.generated.AssocItemList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of `AssocItem` elements, as appearing in a `Trait` or `Impl`. */ - class AssocItemList extends Generated::AssocItemList { } + class AssocItemList extends Generated::AssocItemList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll index fab477d4c3f6..aa0c222f3b62 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AssocTypeArg`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AssocTypeArg * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An associated type argument in a path. * @@ -26,5 +26,7 @@ module Impl { * } * ``` */ - class AssocTypeArg extends Generated::AssocTypeArg { } + class AssocTypeArg extends Generated::AssocTypeArg { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AttrImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AttrImpl.qll index e01d3c3652e4..dc948c3f9007 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AttrImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AttrImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Attr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.Attr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An attribute applied to an item. * @@ -22,5 +22,7 @@ module Impl { * struct S; * ``` */ - class Attr extends Generated::Attr { } + class Attr extends Generated::Attr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgAtomImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgAtomImpl.qll index 6f1515cb7d1b..6a66a0efcc74 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CfgAtomImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgAtomImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `CfgAtom`. * @@ -12,5 +11,7 @@ private import codeql.rust.elements.internal.generated.CfgAtom * be referenced directly. */ module Impl { - class CfgAtom extends Generated::CfgAtom { } + class CfgAtom extends Generated::CfgAtom { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll index 5e189d4126de..f9c79f2e4939 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgAttrMetaImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `CfgAttrMeta`. * @@ -12,5 +11,7 @@ private import codeql.rust.elements.internal.generated.CfgAttrMeta * be referenced directly. */ module Impl { - class CfgAttrMeta extends Generated::CfgAttrMeta { } + class CfgAttrMeta extends Generated::CfgAttrMeta { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgCompositeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgCompositeImpl.qll index 58c9a10af763..7dba801a875a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CfgCompositeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgCompositeImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `CfgComposite`. * @@ -12,5 +11,7 @@ private import codeql.rust.elements.internal.generated.CfgComposite * be referenced directly. */ module Impl { - class CfgComposite extends Generated::CfgComposite { } + class CfgComposite extends Generated::CfgComposite { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CfgMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CfgMetaImpl.qll index f3c75352121e..6f1fc84e4ba4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CfgMetaImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CfgMetaImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `CfgMeta`. * @@ -12,5 +11,7 @@ private import codeql.rust.elements.internal.generated.CfgMeta * be referenced directly. */ module Impl { - class CfgMeta extends Generated::CfgMeta { } + class CfgMeta extends Generated::CfgMeta { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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/ConstArgImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstArgImpl.qll index 7a5a78df17cc..90276ee6f06e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstArgImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstArgImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ConstArg`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ConstArg * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A constant argument in a generic argument list. * @@ -21,5 +21,7 @@ module Impl { * // ^ * ``` */ - class ConstArg extends Generated::ConstArg { } + class ConstArg extends Generated::ConstArg { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll index 7d823a729568..52a9090dbaaa 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ConstBlockPat`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ConstBlockPat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A const block pattern. For example: * ```rust @@ -21,5 +21,7 @@ module Impl { * }; * ``` */ - class ConstBlockPat extends Generated::ConstBlockPat { } + class ConstBlockPat extends Generated::ConstBlockPat { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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/ConstParamImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstParamImpl.qll index e4ff7186254f..7e41ee37e5f1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstParamImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstParamImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ConstParam`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ConstParam * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A constant parameter in a generic parameter list. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^^^^^^^ * ``` */ - class ConstParam extends Generated::ConstParam { } + class ConstParam extends Generated::ConstParam { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll b/rust/ql/lib/codeql/rust/elements/internal/DerefPatConstructor.qll similarity index 59% rename from rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll rename to rust/ql/lib/codeql/rust/elements/internal/DerefPatConstructor.qll index fbed7006a8aa..8c195ffea0c5 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgNameConstructor.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/DerefPatConstructor.qll @@ -1,14 +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 - * `FormatArgsArgName` synthesized instances. + * `DerefPat` synthesized instances. * INTERNAL: Do not use. */ private import codeql.rust.elements.internal.generated.Raw /** - * The characteristic predicate of `FormatArgsArgName` synthesized instances. + * The characteristic predicate of `DerefPat` synthesized instances. * INTERNAL: Do not use. */ -predicate constructFormatArgsArgName(Raw::FormatArgsArgName id) { any() } +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..664af10393dd --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/DerefPatImpl.qll @@ -0,0 +1,29 @@ +/** + * 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 { + // the following QLdoc is generated: if you need to edit it, do it in the schema file + /** + * 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 { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll index 53e46a5f65a7..91f09efab90b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll @@ -25,6 +25,8 @@ module Impl { * ``` */ class DynTraitTypeRepr extends Generated::DynTraitTypeRepr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** Gets the trait that this trait object refers to. */ pragma[nomagic] Trait getTrait() { 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/ExprStmtImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ExprStmtImpl.qll index 1f36bd00db7e..0652b7d9090d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ExprStmtImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ExprStmtImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ExprStmt`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ExprStmt * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An expression statement. For example: * ```rust @@ -20,5 +20,7 @@ module Impl { * use std::env; * ``` */ - class ExprStmt extends Generated::ExprStmt { } + class ExprStmt extends Generated::ExprStmt { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ExternBlockImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ExternBlockImpl.qll index bb60d9c6e660..2c584f6d79fd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ExternBlockImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ExternBlockImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ExternBlock`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ExternBlock * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An extern block containing foreign function declarations. * @@ -22,5 +22,7 @@ module Impl { * } * ``` */ - class ExternBlock extends Generated::ExternBlock { } + class ExternBlock extends Generated::ExternBlock { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ExternCrateImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ExternCrateImpl.qll index af9e4005b196..a7e128571a03 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ExternCrateImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ExternCrateImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ExternCrate`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ExternCrate * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An extern crate declaration. * @@ -20,5 +20,7 @@ module Impl { * extern crate serde; * ``` */ - class ExternCrate extends Generated::ExternCrate { } + class ExternCrate extends Generated::ExternCrate { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ExternItemListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ExternItemListImpl.qll index f2281c5f6d87..0a787d6ff08b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ExternItemListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ExternItemListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ExternItemList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ExternItemList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of items inside an extern block. * @@ -23,5 +23,7 @@ module Impl { * } * ``` */ - class ExternItemList extends Generated::ExternItemList { } + class ExternItemList extends Generated::ExternItemList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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/FnPtrTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FnPtrTypeReprImpl.qll index 41d1151ac362..e39ac8ad523e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FnPtrTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FnPtrTypeReprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `FnPtrTypeRepr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.FnPtrTypeRepr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A function pointer type. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^^^^^^^ * ``` */ - class FnPtrTypeRepr extends Generated::FnPtrTypeRepr { } + class FnPtrTypeRepr extends Generated::FnPtrTypeRepr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ForTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ForTypeReprImpl.qll index 409c0d94c94f..9220b6210dc1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ForTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ForTypeReprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ForTypeRepr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ForTypeRepr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A function pointer type with a `for` modifier. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^^^^^^^^^^^^^^^^^^^ * ``` */ - class ForTypeRepr extends Generated::ForTypeRepr { } + class ForTypeRepr extends Generated::ForTypeRepr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgImpl.qll index c7fa88b51b0b..d82d243662e5 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FormatArgsArgImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `FormatArgsArg`. * @@ -12,11 +11,14 @@ private import codeql.rust.elements.internal.generated.FormatArgsArg * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A FormatArgsArg. For example the `"world"` in: * ```rust * format_args!("Hello, {}!", "world") * ``` */ - class FormatArgsArg extends Generated::FormatArgsArg { } + class FormatArgsArg extends Generated::FormatArgsArg { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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/FormatArgsExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FormatArgsExprImpl.qll index 6cc3aa114616..da91d724db3c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FormatArgsExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FormatArgsExprImpl.qll @@ -24,6 +24,8 @@ module Impl { * ``` */ class FormatArgsExpr extends Generated::FormatArgsExpr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + override Format getFormat(int index) { result = rank[index + 1](Format f, int i | f.getParent() = this and f.getIndex() = i | f order by i) 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..45fe45f45d4e --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/ImplRestrictionImpl.qll @@ -0,0 +1,21 @@ +/** + * 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 { + // the following QLdoc is generated: if you need to edit it, do it in the schema file + /** + * An implementation restriction, limiting where a trait can be implemented. For example the `impl(crate)` restriction (an unstable feature). + */ + class ImplRestriction extends Generated::ImplRestriction { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } +} 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..985fdf310d38 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/IncludeBytesExprImpl.qll @@ -0,0 +1,24 @@ +/** + * 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 { + // the following QLdoc is generated: if you need to edit it, do it in the schema file + /** + * 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 { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } +} 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/ItemListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ItemListImpl.qll index 2d94e6340dd2..65dda52be4e1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ItemListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ItemListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ItemList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ItemList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of items in a module or block. * @@ -23,5 +23,7 @@ module Impl { * } * ``` */ - class ItemList extends Generated::ItemList { } + class ItemList extends Generated::ItemList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll index ac3befd85b60..3d22c12e1aa1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/KeyValueMetaImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `KeyValueMeta`. * @@ -12,5 +11,7 @@ private import codeql.rust.elements.internal.generated.KeyValueMeta * be referenced directly. */ module Impl { - class KeyValueMeta extends Generated::KeyValueMeta { } + class KeyValueMeta extends Generated::KeyValueMeta { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LifetimeArgImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LifetimeArgImpl.qll index db3bd53c8935..5c8dd4d6c3cd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LifetimeArgImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LifetimeArgImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `LifetimeArg`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.LifetimeArg * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A lifetime argument in a generic argument list. * @@ -21,5 +21,7 @@ module Impl { * // ^^ * ``` */ - class LifetimeArg extends Generated::LifetimeArg { } + class LifetimeArg extends Generated::LifetimeArg { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LifetimeParamImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LifetimeParamImpl.qll index 7db6c5bcb69f..8baf08712052 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LifetimeParamImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LifetimeParamImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `LifetimeParam`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.LifetimeParam * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A lifetime parameter in a generic parameter list. * @@ -21,5 +21,7 @@ module Impl { * // ^^ * ``` */ - class LifetimeParam extends Generated::LifetimeParam { } + class LifetimeParam extends Generated::LifetimeParam { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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/MacroDefImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroDefImpl.qll index 90cdfd533c6a..b46d73ce2a17 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroDefImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroDefImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `MacroDef`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.MacroDef * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A Rust 2.0 style declarative macro definition. * @@ -22,5 +22,7 @@ module Impl { * } * ``` */ - class MacroDef extends Generated::MacroDef { } + class MacroDef extends Generated::MacroDef { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroExprImpl.qll index 2dfb6e445ac4..d4e18b6c00fa 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `MacroExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.MacroExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A macro expression, representing the invocation of a macro that produces an expression. * @@ -20,5 +20,7 @@ module Impl { * let y = vec![1, 2, 3]; * ``` */ - class MacroExpr extends Generated::MacroExpr { } + class MacroExpr extends Generated::MacroExpr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroItemsImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroItemsImpl.qll index 0efb96554a47..c41836fbdcf4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroItemsImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroItemsImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `MacroItems`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.MacroItems * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A sequence of items generated by a macro. For example: * ```rust @@ -28,5 +28,7 @@ module Impl { * } * ``` */ - class MacroItems extends Generated::MacroItems { } + class MacroItems extends Generated::MacroItems { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroPatImpl.qll index 166b105ab959..8a990bb2bb46 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroPatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `MacroPat`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.MacroPat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A macro pattern, representing the invocation of a macro that produces a pattern. * @@ -29,5 +29,7 @@ module Impl { * } * ``` */ - class MacroPat extends Generated::MacroPat { } + class MacroPat extends Generated::MacroPat { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroRulesImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroRulesImpl.qll index 5d5b45ea84f6..0999afac1682 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroRulesImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroRulesImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `MacroRules`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.MacroRules * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A macro definition using the `macro_rules!` syntax. * ```rust @@ -22,5 +22,7 @@ module Impl { * } * ``` */ - class MacroRules extends Generated::MacroRules { } + class MacroRules extends Generated::MacroRules { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll index 87801fe58770..40bb3a3b57cc 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `MacroTypeRepr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.MacroTypeRepr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A type produced by a macro. * @@ -24,5 +24,7 @@ module Impl { * // ^^^^^^^^^^^^^ * ``` */ - class MacroTypeRepr extends Generated::MacroTypeRepr { } + class MacroTypeRepr extends Generated::MacroTypeRepr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MatchArmListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MatchArmListImpl.qll index 6f77dc0b42fc..7e8b1b521679 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MatchArmListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MatchArmListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `MatchArmList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.MatchArmList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of arms in a match expression. * @@ -25,5 +25,7 @@ module Impl { * // ^^^^^^^^^^^ * ``` */ - class MatchArmList extends Generated::MatchArmList { } + class MatchArmList extends Generated::MatchArmList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MatchGuardImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MatchGuardImpl.qll index 495fcc88ef65..5ef7a203694b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MatchGuardImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MatchGuardImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `MatchGuard`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.MatchGuard * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A guard condition in a match arm. * @@ -24,5 +24,7 @@ module Impl { * } * ``` */ - class MatchGuard extends Generated::MatchGuard { } + class MatchGuard extends Generated::MatchGuard { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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..cec0128f8c93 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/MutRestrictionImpl.qll @@ -0,0 +1,21 @@ +/** + * 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 { + // the following QLdoc is generated: if you need to edit it, do it in the schema file + /** + * A mutability restriction, limiting where a field can be mutated. For example the `mut(crate)` restriction (an unstable feature). + */ + class MutRestriction extends Generated::MutRestriction { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/NamedCrateImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/NamedCrateImpl.qll index 2dafd18c22b7..ccaca9d83943 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/NamedCrateImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/NamedCrateImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `NamedCrate`. * @@ -12,5 +11,7 @@ private import codeql.rust.elements.internal.generated.NamedCrate * be referenced directly. */ module Impl { - class NamedCrate extends Generated::NamedCrate { } + class NamedCrate extends Generated::NamedCrate { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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..c5c0b9f617ca --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/NotNullImpl.qll @@ -0,0 +1,27 @@ +/** + * 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 following QLdoc is generated: if you need to edit it, do it in the schema file + /** + * 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 { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/OffsetOfExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/OffsetOfExprImpl.qll index 53a0c2e06dc7..0482b91843fe 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/OffsetOfExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/OffsetOfExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `OffsetOfExpr`. * @@ -12,11 +11,14 @@ private import codeql.rust.elements.internal.generated.OffsetOfExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An `offset_of` expression. For example: * ```rust * builtin # offset_of(Struct, field); * ``` */ - class OffsetOfExpr extends Generated::OffsetOfExpr { } + class OffsetOfExpr extends Generated::OffsetOfExpr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParamListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParamListImpl.qll index c0b914c1e3ca..ca9f28f4eaa2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParamListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParamListImpl.qll @@ -22,6 +22,8 @@ module Impl { * ``` */ class ParamList extends Generated::ParamList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets any of the parameters of this parameter list. */ 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/ParenthesizedArgListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll index b6b41caea7a5..dbb28970be10 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ParenthesizedArgList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ParenthesizedArgList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A parenthesized argument list as used in function traits. * @@ -26,5 +26,7 @@ module Impl { * } * ``` */ - class ParenthesizedArgList extends Generated::ParenthesizedArgList { } + class ParenthesizedArgList extends Generated::ParenthesizedArgList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathMetaImpl.qll index fd58653419e7..6e0db162f786 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathMetaImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathMetaImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `PathMeta`. * @@ -12,5 +11,7 @@ private import codeql.rust.elements.internal.generated.PathMeta * be referenced directly. */ module Impl { - class PathMeta extends Generated::PathMeta { } + class PathMeta extends Generated::PathMeta { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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..c9b0951a2ffe --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/PatternTypeReprImpl.qll @@ -0,0 +1,26 @@ +/** + * 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 { + // the following QLdoc is generated: if you need to edit it, do it in the schema file + /** + * 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 { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll index 3e8c80ba0ea4..ca18cb6c862d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `PtrTypeRepr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.PtrTypeRepr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A pointer type. * @@ -22,5 +22,7 @@ module Impl { * // ^^^^^^^^^ * ``` */ - class PtrTypeRepr extends Generated::PtrTypeRepr { } + class PtrTypeRepr extends Generated::PtrTypeRepr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RangePatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RangePatImpl.qll index dc88a8070a5a..38935f9ca9ad 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RangePatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RangePatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `RangePat`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.RangePat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A range pattern. For example: * ```rust @@ -22,5 +22,7 @@ module Impl { * } * ``` */ - class RangePat extends Generated::RangePat { } + class RangePat extends Generated::RangePat { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RefTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RefTypeReprImpl.qll index 334d223a42cf..a3014bfc6cad 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RefTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RefTypeReprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `RefTypeRepr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.RefTypeRepr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A reference type. * @@ -22,5 +22,7 @@ module Impl { * // ^^^^^^^^ * ``` */ - class RefTypeRepr extends Generated::RefTypeRepr { } + class RefTypeRepr extends Generated::RefTypeRepr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RenameImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RenameImpl.qll index 1788cf98c254..88f9e13a7f5d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RenameImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RenameImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Rename`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.Rename * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A rename in a use declaration. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^ * ``` */ - class Rename extends Generated::Rename { } + class Rename extends Generated::Rename { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll index d8b6a5b9e82c..0c95aa955ac3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `RetTypeRepr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.RetTypeRepr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A return type in a function signature. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^ * ``` */ - class RetTypeRepr extends Generated::RetTypeRepr { } + class RetTypeRepr extends Generated::RetTypeRepr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll index ffb09d726ab9..381d673c4279 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ReturnTypeSyntax`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ReturnTypeSyntax * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A return type notation `(..)` to reference or bound the type returned by a trait method * @@ -31,5 +31,7 @@ module Impl { * } * ``` */ - class ReturnTypeSyntax extends Generated::ReturnTypeSyntax { } + class ReturnTypeSyntax extends Generated::ReturnTypeSyntax { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/SelfParamImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/SelfParamImpl.qll index dad7b1d96fb2..11327066a48f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/SelfParamImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/SelfParamImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `SelfParam`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.SelfParam * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A `self` parameter. For example `self` in: * ```rust @@ -25,5 +25,7 @@ module Impl { * } * ``` */ - class SelfParam extends Generated::SelfParam { } + class SelfParam extends Generated::SelfParam { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/SlicePatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/SlicePatImpl.qll index d905247cc663..6b2cb0cb8781 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/SlicePatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/SlicePatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `SlicePat`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.SlicePat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A slice pattern. For example: * ```rust @@ -22,5 +22,7 @@ module Impl { * } * ``` */ - class SlicePat extends Generated::SlicePat { } + class SlicePat extends Generated::SlicePat { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll index 3c17ad922a6a..b08521e17a1d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `SliceTypeRepr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.SliceTypeRepr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A slice type. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^ * ``` */ - class SliceTypeRepr extends Generated::SliceTypeRepr { } + class SliceTypeRepr extends Generated::SliceTypeRepr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/SourceFileImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/SourceFileImpl.qll index 7be1e405ddfe..e97c066e6f62 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/SourceFileImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/SourceFileImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `SourceFile`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.SourceFile * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A source file. * @@ -21,5 +21,7 @@ module Impl { * fn main() {} * ``` */ - class SourceFile extends Generated::SourceFile { } + class SourceFile extends Generated::SourceFile { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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/StmtListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StmtListImpl.qll index d56b4c49ce21..1e1c6f2a2bca 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StmtListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StmtListImpl.qll @@ -27,6 +27,8 @@ module Impl { * ``` */ class StmtList extends Generated::StmtList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the `index`th statement or expression of this statement list (0-based). * diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll index b4197e55885d..c00d54ab0ce1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `StructExprFieldList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.StructExprFieldList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of fields in a struct expression. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^^^^ * ``` */ - class StructExprFieldList extends Generated::StructExprFieldList { } + class StructExprFieldList extends Generated::StructExprFieldList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructFieldListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructFieldListImpl.qll index a6a16d430c21..bcaf879db754 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructFieldListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructFieldListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `StructFieldList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.StructFieldList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of fields in a struct declaration. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^^^^^^^^ * ``` */ - class StructFieldList extends Generated::StructFieldList { } + class StructFieldList extends Generated::StructFieldList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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/StructPatFieldListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll index a2a078a5bf33..81fa9d687ea2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `StructPatFieldList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.StructPatFieldList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of fields in a struct pattern. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^ * ``` */ - class StructPatFieldList extends Generated::StructPatFieldList { } + class StructPatFieldList extends Generated::StructPatFieldList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TokenTreeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TokenTreeImpl.qll index 15e9c15abe12..3fc3b62278aa 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TokenTreeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TokenTreeImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `TokenTree`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.TokenTree * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A token tree in a macro definition or invocation. * @@ -25,5 +25,7 @@ module Impl { * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * ``` */ - class TokenTree extends Generated::TokenTree { } + class TokenTree extends Generated::TokenTree { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll index b61b222879d8..33c928c763d3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TokenTreeMetaImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `TokenTreeMeta`. * @@ -12,5 +11,7 @@ private import codeql.rust.elements.internal.generated.TokenTreeMeta * be referenced directly. */ module Impl { - class TokenTreeMeta extends Generated::TokenTreeMeta { } + class TokenTreeMeta extends Generated::TokenTreeMeta { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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/TryBlockModifierImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TryBlockModifierImpl.qll index 8be62790eeeb..8e478141f23e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TryBlockModifierImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TryBlockModifierImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `TryBlockModifier`. * @@ -12,5 +11,7 @@ private import codeql.rust.elements.internal.generated.TryBlockModifier * be referenced directly. */ module Impl { - class TryBlockModifier extends Generated::TryBlockModifier { } + class TryBlockModifier extends Generated::TryBlockModifier { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TryExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TryExprImpl.qll index 0eaa4462ea70..dd133194d4d1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TryExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TryExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `TryExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.TryExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A try expression using the `?` operator. * @@ -21,5 +21,7 @@ module Impl { * // ^ * ``` */ - class TryExpr extends Generated::TryExpr { } + class TryExpr extends Generated::TryExpr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TupleExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TupleExprImpl.qll index df818859d879..0a40768fb263 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TupleExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TupleExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `TupleExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.TupleExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A tuple expression. For example: * ```rust @@ -20,5 +20,7 @@ module Impl { * let (a, b) = tuple; * ``` */ - class TupleExpr extends Generated::TupleExpr { } + class TupleExpr extends Generated::TupleExpr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TupleFieldImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TupleFieldImpl.qll index f26c855e3cb2..d9ac804c72da 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TupleFieldImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TupleFieldImpl.qll @@ -24,6 +24,8 @@ module Impl { * ``` */ class TupleField extends Generated::TupleField { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** Holds if this tuple field is the `pos`th field of variant `v`. */ predicate isVariantField(Variant v, int pos) { this = v.getTupleField(pos) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TupleFieldListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TupleFieldListImpl.qll index b52f0477987b..bee2af0a683c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TupleFieldListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TupleFieldListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `TupleFieldList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.TupleFieldList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of fields in a tuple struct or tuple variant. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^^^^^^ * ``` */ - class TupleFieldList extends Generated::TupleFieldList { } + class TupleFieldList extends Generated::TupleFieldList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TuplePatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TuplePatImpl.qll index ac9a723b6e13..b4a9ffed6ef4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TuplePatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TuplePatImpl.qll @@ -22,6 +22,8 @@ module Impl { * ``` */ class TuplePat extends Generated::TuplePat { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + /** * Gets the arity of the tuple matched by this pattern, if any. * diff --git a/rust/ql/lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll index 47b18d2aca95..f529d731e0f7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `TupleTypeRepr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.TupleTypeRepr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A tuple type. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^^^^^^ * ``` */ - class TupleTypeRepr extends Generated::TupleTypeRepr { } + class TupleTypeRepr extends Generated::TupleTypeRepr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TypeArgImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TypeArgImpl.qll index 616bc8e5af5c..56a3cf9ed5a0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TypeArgImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TypeArgImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `TypeArg`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.TypeArg * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A type argument in a generic argument list. * @@ -21,5 +21,7 @@ module Impl { * // ^^^ * ``` */ - class TypeArg extends Generated::TypeArg { } + class TypeArg extends Generated::TypeArg { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TypeBoundImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TypeBoundImpl.qll index cf05bbc4adad..918238cd656e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TypeBoundImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TypeBoundImpl.qll @@ -24,6 +24,8 @@ module Impl { * ``` */ class TypeBound extends Generated::TypeBound { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + override string toAbbreviatedString() { result = this.getLifetime().toAbbreviatedString() or 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/UnsafeMetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UnsafeMetaImpl.qll index 7da4ed5ace29..295b6b06b5fa 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UnsafeMetaImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UnsafeMetaImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `UnsafeMeta`. * @@ -12,5 +11,7 @@ private import codeql.rust.elements.internal.generated.UnsafeMeta * be referenced directly. */ module Impl { - class UnsafeMeta extends Generated::UnsafeMeta { } + class UnsafeMeta extends Generated::UnsafeMeta { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll index 5b18c8f49789..eab75ccca592 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `UseBoundGenericArgs`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.UseBoundGenericArgs * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A use<..> bound to control which generic parameters are captured by an impl Trait return type. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^ * ``` */ - class UseBoundGenericArgs extends Generated::UseBoundGenericArgs { } + class UseBoundGenericArgs extends Generated::UseBoundGenericArgs { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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/UseTreeListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UseTreeListImpl.qll index d5f86f1ba3a7..de3260b9d8f3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UseTreeListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UseTreeListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `UseTreeList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.UseTreeList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of use trees in a use declaration. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^ * ``` */ - class UseTreeList extends Generated::UseTreeList { } + class UseTreeList extends Generated::UseTreeList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariantListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariantListImpl.qll index 2537307d34e1..c671954d10b4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariantListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariantListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `VariantList`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.VariantList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A list of variants in an enum declaration. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^^^^ * ``` */ - class VariantList extends Generated::VariantList { } + class VariantList extends Generated::VariantList { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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..28f66a5db70c --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/VisibilityInnerImpl.qll @@ -0,0 +1,25 @@ +/** + * 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 following QLdoc is generated: if you need to edit it, do it in the schema file + /** + * 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 { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/WhereClauseImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/WhereClauseImpl.qll index aa916bbee56f..00d34f2ea290 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/WhereClauseImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/WhereClauseImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `WhereClause`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.WhereClause * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A where clause in a generic declaration. * @@ -21,5 +21,7 @@ module Impl { * // ^^^^^^^^^^^^^^ * ``` */ - class WhereClause extends Generated::WhereClause { } + class WhereClause extends Generated::WhereClause { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/WherePredImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/WherePredImpl.qll index 9e4231ec5154..58b238c1af9a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/WherePredImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/WherePredImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `WherePred`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.WherePred * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A predicate in a where clause. * @@ -23,5 +23,7 @@ module Impl { * // ^^^^^^^^^^^^^^^^^^^^^^^^ * ``` */ - class WherePred extends Generated::WherePred { } + class WherePred extends Generated::WherePred { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/YeetExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/YeetExprImpl.qll index 37ddd76f8f8d..4e2049d24f63 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/YeetExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/YeetExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `YeetExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.YeetExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A `yeet` expression. For example: * ```rust @@ -20,5 +20,7 @@ module Impl { * } * ``` */ - class YeetExpr extends Generated::YeetExpr { } + class YeetExpr extends Generated::YeetExpr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/YieldExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/YieldExprImpl.qll index 573f66266158..8e682a17b2ab 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/YieldExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/YieldExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `YieldExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.YieldExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A `yield` expression. For example: * ```rust @@ -21,5 +21,7 @@ module Impl { * }; * ``` */ - class YieldExpr extends Generated::YieldExpr { } + class YieldExpr extends Generated::YieldExpr { + override string toStringImpl() { result = this.getAPrimaryQlClass() } + } } 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..37299a945e45 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll @@ -7,6 +7,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.AsmPieceImpl::Impl as AsmPieceImpl +import codeql.rust.elements.Attr /** * INTERNAL: This module contains the fully generated definition of `AsmClobberAbi` and should not @@ -27,5 +28,25 @@ module Generated { */ class AsmClobberAbi extends Synth::TAsmClobberAbi, AsmPieceImpl::AsmPiece { override string getAPrimaryQlClass() { result = "AsmClobberAbi" } + + /** + * Gets the `index`th attr of this asm clobber abi (0-based). + */ + Attr getAttr(int index) { + result = + Synth::convertAttrFromRaw(Synth::convertAsmClobberAbiToRaw(this) + .(Raw::AsmClobberAbi) + .getAttr(index)) + } + + /** + * Gets any of the attrs of this asm clobber abi. + */ + final Attr 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/AsmOperandNamed.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll index 158acb3aa48d..917866383a61 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll @@ -8,6 +8,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.AsmOperand import codeql.rust.elements.internal.AsmPieceImpl::Impl as AsmPieceImpl +import codeql.rust.elements.Attr import codeql.rust.elements.Name /** @@ -45,6 +46,26 @@ module Generated { */ final predicate hasAsmOperand() { exists(this.getAsmOperand()) } + /** + * Gets the `index`th attr of this asm operand named (0-based). + */ + Attr getAttr(int index) { + result = + Synth::convertAttrFromRaw(Synth::convertAsmOperandNamedToRaw(this) + .(Raw::AsmOperandNamed) + .getAttr(index)) + } + + /** + * Gets any of the attrs of this asm operand named. + */ + final Attr 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/AsmOptionsList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll index de8f7bccb0f8..e0c53f19f587 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll @@ -8,6 +8,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.AsmOption import codeql.rust.elements.internal.AsmPieceImpl::Impl as AsmPieceImpl +import codeql.rust.elements.Attr /** * INTERNAL: This module contains the fully generated definition of `AsmOptionsList` and should not @@ -48,5 +49,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). + */ + Attr getAttr(int index) { + result = + Synth::convertAttrFromRaw(Synth::convertAsmOptionsListToRaw(this) + .(Raw::AsmOptionsList) + .getAttr(index)) + } + + /** + * Gets any of the attrs of this asm options list. + */ + final Attr 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/DerefPat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/DerefPat.qll new file mode 100644 index 000000000000..abf59274933b --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/DerefPat.qll @@ -0,0 +1,45 @@ +// 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" } + + /** + * 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/FormatArgsArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll index 2c5ab6fe693c..80ca340284fa 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 @@ -27,33 +27,33 @@ module Generated { override string getAPrimaryQlClass() { 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() { + 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/ImplRestriction.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ImplRestriction.qll new file mode 100644 index 000000000000..22210ede91a9 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ImplRestriction.qll @@ -0,0 +1,40 @@ +// 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" } + + /** + * 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..712f9c6b37dc --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/IncludeBytesExpr.qll @@ -0,0 +1,27 @@ +// 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" } + } +} 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..8d387ff8ccf7 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MutRestriction.qll @@ -0,0 +1,45 @@ +// 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" } + + /** + * 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/NotNull.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/NotNull.qll new file mode 100644 index 000000000000..0748f287a6eb --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/NotNull.qll @@ -0,0 +1,30 @@ +// 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" } + } +} 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..98f08ef82da7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll @@ -188,26 +188,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 +232,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 +353,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 +577,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 +596,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 +667,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 +679,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 +792,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 +896,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 +935,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 +956,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() + ")" ) ) } @@ -1256,6 +1322,18 @@ 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 getImmediateChildOfDynTraitTypeRepr( DynTraitTypeRepr e, int index, string partialPredicateCall ) { @@ -1419,6 +1497,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 +1757,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 +1895,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 +2701,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 +2731,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 @@ -3117,12 +3227,12 @@ private module Impl { 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 +3247,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 +3299,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) @@ -3245,6 +3359,8 @@ private module Impl { or result = getImmediateChildOfContinueExpr(e, index, partialAccessor) or + result = getImmediateChildOfDerefPat(e, index, partialAccessor) + or result = getImmediateChildOfDynTraitTypeRepr(e, index, partialAccessor) or result = getImmediateChildOfExprStmt(e, index, partialAccessor) @@ -3263,6 +3379,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 +3415,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 +3435,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/PatternTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PatternTypeRepr.qll new file mode 100644 index 000000000000..9081b0642797 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PatternTypeRepr.qll @@ -0,0 +1,61 @@ +// 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" } + + /** + * 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/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll index 3caf2b58e28e..d1b744dde198 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -543,40 +543,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 +667,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. @@ -1004,6 +1020,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. @@ -1621,6 +1667,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 +1689,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 +1707,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 @@ -1832,6 +1889,11 @@ module Raw { */ 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 +1906,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 +2223,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 @@ -2367,9 +2461,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). + */ + Attr 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 +2576,16 @@ module Raw { */ AsmOperand getAsmOperand() { asm_operand_named_asm_operands(this, result) } + /** + * Gets the `index`th attr of this asm operand named (0-based). + */ + Attr 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 +2593,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 +2633,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). + */ + Attr 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) ) ) } @@ -3440,6 +3580,39 @@ 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 dynamic trait object type. @@ -3875,6 +4048,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: @@ -4573,6 +4759,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: @@ -4888,6 +5090,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: @@ -6831,6 +7071,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 +7110,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 +7133,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 @@ -7855,12 +8103,12 @@ module Raw { 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 +8123,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 +8175,8 @@ module Raw { or result = getImmediateChildOfVisibility(e, index) or + result = getImmediateChildOfVisibilityInner(e, index) + or result = getImmediateChildOfWhereClause(e, index) or result = getImmediateChildOfWherePred(e, index) @@ -7983,6 +8235,8 @@ module Raw { or result = getImmediateChildOfContinueExpr(e, index) or + result = getImmediateChildOfDerefPat(e, index) + or result = getImmediateChildOfDynTraitTypeRepr(e, index) or result = getImmediateChildOfExprStmt(e, index) @@ -8001,6 +8255,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 +8291,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 +8311,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/StructField.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll index bbad0ec97fc7..2e540f11314f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll @@ -9,6 +9,7 @@ private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl import codeql.rust.elements.Attr import codeql.rust.elements.ConstArg +import codeql.rust.elements.MutRestriction import codeql.rust.elements.Name import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility @@ -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/Synth.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll index bff6809686f8..add9d9a14dcd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll @@ -178,6 +178,10 @@ 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. */ @@ -236,10 +240,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 +282,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 +406,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 +426,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 +486,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 +706,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. */ @@ -743,15 +767,16 @@ module Synth { 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 + 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 TWhereClause or TWherePred; + TUseTree or TUseTreeList or TVariantList or TVisibility or TVisibilityInner or + TWhereClause or TWherePred; /** * INTERNAL: Do not use. @@ -769,10 +794,10 @@ 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; + 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 +856,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 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 +891,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. @@ -1182,6 +1207,13 @@ 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. * @@ -1280,15 +1312,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 +1377,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 +1393,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 +1596,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 +1631,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 +1738,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 +2129,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. * @@ -2214,8 +2279,6 @@ module Synth { or result = convertFormatArgsArgFromRaw(e) or - result = convertFormatArgsArgNameFromRaw(e) - or result = convertGenericArgFromRaw(e) or result = convertGenericArgListFromRaw(e) @@ -2224,6 +2287,8 @@ module Synth { or result = convertGenericParamListFromRaw(e) or + result = convertImplRestrictionFromRaw(e) + or result = convertItemListFromRaw(e) or result = convertLabelFromRaw(e) @@ -2240,6 +2305,8 @@ module Synth { or result = convertMetaFromRaw(e) or + result = convertMutRestrictionFromRaw(e) + or result = convertNameFromRaw(e) or result = convertParamBaseFromRaw(e) @@ -2304,6 +2371,8 @@ module Synth { or result = convertVisibilityFromRaw(e) or + result = convertVisibilityInnerFromRaw(e) + or result = convertWhereClauseFromRaw(e) or result = convertWherePredFromRaw(e) @@ -2376,6 +2445,8 @@ module Synth { or result = convertIfExprFromRaw(e) or + result = convertIncludeBytesExprFromRaw(e) + or result = convertIndexExprFromRaw(e) or result = convertLabelableExprFromRaw(e) @@ -2570,12 +2641,16 @@ module Synth { 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 +2755,8 @@ module Synth { or result = convertPathTypeReprFromRaw(e) or + result = convertPatternTypeReprFromRaw(e) + or result = convertPtrTypeReprFromRaw(e) or result = convertRefTypeReprFromRaw(e) @@ -2957,6 +3034,12 @@ 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 `TDynTraitTypeRepr` to a raw DB element, if possible. @@ -3041,14 +3124,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 +3178,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 +3192,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 +3366,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 +3396,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 +3488,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 +3824,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. @@ -3856,8 +3967,6 @@ module Synth { or result = convertFormatArgsArgToRaw(e) or - result = convertFormatArgsArgNameToRaw(e) - or result = convertGenericArgToRaw(e) or result = convertGenericArgListToRaw(e) @@ -3866,6 +3975,8 @@ module Synth { or result = convertGenericParamListToRaw(e) or + result = convertImplRestrictionToRaw(e) + or result = convertItemListToRaw(e) or result = convertLabelToRaw(e) @@ -3882,6 +3993,8 @@ module Synth { or result = convertMetaToRaw(e) or + result = convertMutRestrictionToRaw(e) + or result = convertNameToRaw(e) or result = convertParamBaseToRaw(e) @@ -3946,6 +4059,8 @@ module Synth { or result = convertVisibilityToRaw(e) or + result = convertVisibilityInnerToRaw(e) + or result = convertWhereClauseToRaw(e) or result = convertWherePredToRaw(e) @@ -4018,6 +4133,8 @@ module Synth { or result = convertIfExprToRaw(e) or + result = convertIncludeBytesExprToRaw(e) + or result = convertIndexExprToRaw(e) or result = convertLabelableExprToRaw(e) @@ -4212,12 +4329,16 @@ module Synth { 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 +4443,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..58f7e37f2b1e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/SynthConstructors.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/SynthConstructors.qll @@ -44,6 +44,7 @@ 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.DynTraitTypeReprConstructor import codeql.rust.elements.internal.EnumConstructor import codeql.rust.elements.internal.ExprStmtConstructor @@ -58,7 +59,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 +68,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 +99,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 +119,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 +174,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/Trait.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Trait.qll index fff0363a3c75..878c3ae4b015 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Trait.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Trait.qll @@ -9,6 +9,7 @@ private import codeql.rust.elements.internal.generated.Raw 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 @@ -84,6 +85,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/TupleField.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleField.qll index 8d39a116f5c0..7ed0d4788d82 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleField.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleField.qll @@ -8,6 +8,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl import codeql.rust.elements.Attr +import codeql.rust.elements.MutRestriction import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility @@ -50,6 +51,21 @@ module Generated { */ 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/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..4283b56cd9dd --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/VisibilityInner.qll @@ -0,0 +1,44 @@ +// 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" } + + /** + * 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/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/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..e68f69fa0681 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -129,6 +129,11 @@ 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"] 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..d73e9ad2380e 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 @@ -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/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,62 +29,12 @@ 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) { tp = rank[result](TypeParameter tp0, int kind, int id1, int id2 | @@ -272,26 +214,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 +251,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 +869,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 +965,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 +1095,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 +1213,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 +1578,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 +1666,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 +1861,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 +1885,1286 @@ 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)) + ) +} + +private module Input3 implements InputSig3 { + private import rust as Rust + private import codeql.rust.dataflow.internal.ModelsAsData -abstract private class Constructor extends Addressable { - final TypeParameter getTypeParameter(TypeParameterPosition ppos) { - typeParamMatchPosition(this.getTypeItem().getGenericParamList().getATypeParam(), result, ppos) + 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 ExprExpr extends ExprImpl, Rust::Expr { } -private class StructConstructor extends Constructor instanceof Struct { - override TypeItem getTypeItem() { result = this } + private class ArgListExpr extends ExprImpl, ArgList { } - override TypeRepr getParameterTypeRepr(int i) { - result = [super.getTupleField(i).getTypeRepr(), super.getNthStructField(i).getTypeRepr()] + 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 { } - override Declaration getTarget() { result = this.resolveCallTargetViaPathResolution() } + class AssignExpr extends AssignmentImpl, Rust::AssignmentExpr { } + + 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 and apos.isReturn() + result = this.asConst().getAnAccess() + or + 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; - override AstNode getNodeAt(AccessPosition apos) { result = this and apos.isReturn() } + abstract private class VariableDeclarationImpl extends DeclarationImpl { + abstract predicate preservesInitializerType(); + + 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() } - } - predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { - apos = dpos + 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 + ) + } + + 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; -/** 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 -} + abstract private class ConstructorImpl extends CallableImpl { + abstract TypeItem 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 getDeclaringType() { result = this.getTypeItem() } -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 TypeMention getAdditionalTypeParameterConstraint(TypeParameter tp) { none() } -pragma[nomagic] -private StructType getStrStruct() { result = TDataType(any(Builtins::Str s)) } + override TypeParameter getTypeParameter(int pos) { + result = TTypeParamTypeParameter(this.getTypeItem().getGenericParamList().getTypeParam(pos)) + } -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 TypeMention getType() { result = this.getTypeItem() } + + 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 | - result = call.(AssocFunctionResolution::AssocFunctionCall).resolveCallTarget(i, _, _, _) and - not call instanceof CallExprImpl::DynamicCallExpr and - not i instanceof Builtins::BuiltinImpl + t0 = inferInvocationSelfArgumentTypeContextual(invocation, receiver, derefChain0, path0) and + derefChain0.isCons(impl, derefChain) and + selfParamType = impl.resolveSelfTypeAt(selfPath) + | + 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 { } + + 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 +3198,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/qlpack.yml b/rust/ql/src/qlpack.yml index 2e13de282d58..dc4e53aeaf81 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.43-dev groups: - rust - queries diff --git a/rust/ql/test/.gitignore b/rust/ql/test/.gitignore index 29291fe2d12c..eb43358aa293 100644 --- a/rust/ql/test/.gitignore +++ b/rust/ql/test/.gitignore @@ -3,6 +3,9 @@ target/ # these are all generated, see `rust/extractor/src/qltest.rs` for details Cargo.toml /*/**/rust-toolchain.toml +# but this one is committed on purpose: it pins a pre-1.94 toolchain to exercise +# the extractor's `FormatArgsExpr` reconstruction fallback. +!/library-tests/format-macros-legacy/rust-toolchain.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..8f1bb1590f44 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.185) #-----| rustc_std_workspace_core -> Crate(core@0.0.0) main.rs: @@ -96,14 +98,13 @@ 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.185) #-----| 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.7) #-----| Crate(rand@0.9.2) #-----| rand_core -> Crate(rand_core@0.9.3) @@ -113,38 +114,36 @@ main.rs: #-----| Crate(rand_xorshift@0.4.0) #-----| rand_core -> Crate(rand_core@0.9.3) -#-----| Crate(rustc_demangle@0.1.25) +#-----| Crate(rustc_demangle@0.1.27) #-----| core -> Crate(core@0.0.0) -#-----| Crate(rustc_literal_escaper@0.0.5) +#-----| Crate(rustc_literal_escaper@0.0.7) #-----| 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.185) #-----| 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.2) +#-----| rand_xorshift -> Crate(rand_xorshift@0.4.0) +#-----| rustc_demangle -> Crate(rustc_demangle@0.1.27) #-----| 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.185) #-----| 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.185) +#-----| 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.185) #-----| 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..5461e89bf465 100644 --- a/rust/ql/test/extractor-tests/generated/.generated_tests.list +++ b/rust/ql/test/extractor-tests/generated/.generated_tests.list @@ -32,6 +32,7 @@ ConstArg/gen_const_arg.rs 6a15d099c61ffa814e8e0e0fca2d8ff481d73ad81959064e0a214d 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 DynTraitTypeRepr/gen_dyn_trait_type_repr.rs 1864f3900bdae6f4a0a428e0b2a1266b758dfa8f27059353a639612d8829f4dd 1864f3900bdae6f4a0a428e0b2a1266b758dfa8f27059353a639612d8829f4dd Enum/gen_enum.rs 59c6dc0185c6b0dd877ce1b2291d3b8ab05041194b7bfc948e97baa4908605fa 59c6dc0185c6b0dd877ce1b2291d3b8ab05041194b7bfc948e97baa4908605fa ExprStmt/gen_expr_stmt.rs 6ce47428a8d33b902c1f14b06cc375d08eff95251e4a81dac2fa51872b7649b1 6ce47428a8d33b902c1f14b06cc375d08eff95251e4a81dac2fa51872b7649b1 @@ -54,6 +55,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 +85,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 +98,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 +149,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..6070e3e0ccc2 100644 --- a/rust/ql/test/extractor-tests/generated/.gitattributes +++ b/rust/ql/test/extractor-tests/generated/.gitattributes @@ -34,6 +34,7 @@ /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 /DynTraitTypeRepr/gen_dyn_trait_type_repr.rs linguist-generated /Enum/gen_enum.rs linguist-generated /ExprStmt/gen_expr_stmt.rs linguist-generated @@ -56,6 +57,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 +87,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 +100,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 +151,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/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..9b434d33a7e5 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, Attr 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..c3f7718bc1ef 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, Attr 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..bb4a00fa29d5 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, Attr 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/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/FormatArgsArgName/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/ImplRestriction/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/ImplRestriction/MISSING_SOURCE.txt 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/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/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/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..ad76a38ee123 100644 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField.ql +++ b/rust/ql/test/extractor-tests/generated/StructField/StructField.ql @@ -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/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..dc424929baba 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait.ql +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait.ql @@ -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/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..4ae68d26fa4e 100644 --- a/rust/ql/test/extractor-tests/generated/TupleField/TupleField.ql +++ b/rust/ql/test/extractor-tests/generated/TupleField/TupleField.ql @@ -8,6 +8,10 @@ query predicate getAttr(TupleField x, int index, Attr 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/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/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/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/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/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/format-macros-legacy/Cargo.lock b/rust/ql/test/library-tests/format-macros-legacy/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/format-macros-legacy/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/format-macros-legacy/FormatArgs.expected b/rust/ql/test/library-tests/format-macros-legacy/FormatArgs.expected new file mode 100644 index 000000000000..d8373ec3f9e3 --- /dev/null +++ b/rust/ql/test/library-tests/format-macros-legacy/FormatArgs.expected @@ -0,0 +1,12 @@ +| main.rs:13:18:13:24 | FormatArgsExpr | 1 | +| main.rs:16:18:16:22 | FormatArgsExpr | 0 | +| main.rs:19:21:19:35 | FormatArgsExpr | 1 | +| main.rs:27:25:27:33 | FormatArgsExpr | 1 | +| main.rs:38:40:38:46 | FormatArgsExpr | 0 | +| main.rs:43:52:43:58 | FormatArgsExpr | 0 | +| main.rs:49:26:49:32 | FormatArgsExpr | 1 | +| main.rs:54:28:54:32 | FormatArgsExpr | 0 | +| main.rs:64:14:64:26 | FormatArgsExpr | 1 | +| main.rs:65:15:65:25 | FormatArgsExpr | 0 | +| main.rs:66:12:66:24 | FormatArgsExpr | 1 | +| main.rs:67:13:67:23 | FormatArgsExpr | 0 | diff --git a/rust/ql/test/library-tests/format-macros-legacy/FormatArgs.ql b/rust/ql/test/library-tests/format-macros-legacy/FormatArgs.ql new file mode 100644 index 000000000000..77d7ab895bda --- /dev/null +++ b/rust/ql/test/library-tests/format-macros-legacy/FormatArgs.ql @@ -0,0 +1,8 @@ +// Reconstructed `FormatArgsExpr` nodes for the format-family macros. On the +// pinned pre-1.94 toolchain these come entirely from the extractor's +// reconstruction path, so the presence of one node per macro invocation +// (including `write!`/`writeln!`) confirms it fires across the family. +import rust + +from FormatArgsExpr f +select f, f.getNumberOfArgs() diff --git a/rust/ql/test/library-tests/format-macros-legacy/LogInjection.expected b/rust/ql/test/library-tests/format-macros-legacy/LogInjection.expected new file mode 100644 index 000000000000..b294b89e83fb --- /dev/null +++ b/rust/ql/test/library-tests/format-macros-legacy/LogInjection.expected @@ -0,0 +1,28 @@ +#select +| main.rs:64:14:64:26 | MacroExpr | main.rs:62:19:62:45 | ...::var(...) | main.rs:64:14:64:26 | MacroExpr | Log entry depends on a $@. | main.rs:62:19:62:45 | ...::var(...) | user-provided value | +| main.rs:65:15:65:25 | MacroExpr | main.rs:62:19:62:45 | ...::var(...) | main.rs:65:15:65:25 | MacroExpr | Log entry depends on a $@. | main.rs:62:19:62:45 | ...::var(...) | user-provided value | +| main.rs:66:12:66:24 | MacroExpr | main.rs:62:19:62:45 | ...::var(...) | main.rs:66:12:66:24 | MacroExpr | Log entry depends on a $@. | main.rs:62:19:62:45 | ...::var(...) | user-provided value | +| main.rs:67:13:67:23 | MacroExpr | main.rs:62:19:62:45 | ...::var(...) | main.rs:67:13:67:23 | MacroExpr | Log entry depends on a $@. | main.rs:62:19:62:45 | ...::var(...) | user-provided value | +edges +| main.rs:62:9:62:15 | tainted | main.rs:64:14:64:26 | MacroExpr | provenance | Sink:MaD:2 | +| main.rs:62:9:62:15 | tainted | main.rs:65:15:65:25 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:62:9:62:15 | tainted | main.rs:66:12:66:24 | MacroExpr | provenance | Sink:MaD:2 | +| main.rs:62:9:62:15 | tainted | main.rs:67:13:67:23 | MacroExpr | provenance | Sink:MaD:1 | +| main.rs:62:19:62:45 | ...::var(...) | main.rs:62:19:62:45 | ...::var(...) [Ok] | provenance | Src:MaD:3 | +| main.rs:62:19:62:45 | ...::var(...) [Ok] | main.rs:62:19:62:65 | ... .unwrap_or_default() | provenance | MaD:4 | +| main.rs:62:19:62:65 | ... .unwrap_or_default() | main.rs:62:9:62:15 | tainted | provenance | | +models +| 1 | Sink: std::io::stdio::_eprint; Argument[0]; log-injection | +| 2 | Sink: std::io::stdio::_print; Argument[0]; log-injection | +| 3 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | +| 4 | Summary: ::unwrap_or_default; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +nodes +| main.rs:62:9:62:15 | tainted | semmle.label | tainted | +| main.rs:62:19:62:45 | ...::var(...) | semmle.label | ...::var(...) | +| main.rs:62:19:62:45 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | +| main.rs:62:19:62:65 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | +| main.rs:64:14:64:26 | MacroExpr | semmle.label | MacroExpr | +| main.rs:65:15:65:25 | MacroExpr | semmle.label | MacroExpr | +| main.rs:66:12:66:24 | MacroExpr | semmle.label | MacroExpr | +| main.rs:67:13:67:23 | MacroExpr | semmle.label | MacroExpr | +subpaths diff --git a/rust/ql/test/library-tests/format-macros-legacy/LogInjection.qlref b/rust/ql/test/library-tests/format-macros-legacy/LogInjection.qlref new file mode 100644 index 000000000000..3949abc78143 --- /dev/null +++ b/rust/ql/test/library-tests/format-macros-legacy/LogInjection.qlref @@ -0,0 +1,4 @@ +query: queries/security/CWE-117/LogInjection.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/library-tests/format-macros-legacy/inline-taint-flow.expected b/rust/ql/test/library-tests/format-macros-legacy/inline-taint-flow.expected new file mode 100644 index 000000000000..97ef77e17760 --- /dev/null +++ b/rust/ql/test/library-tests/format-macros-legacy/inline-taint-flow.expected @@ -0,0 +1,124 @@ +models +| 1 | Summary: ::as_str; Argument[self].Reference; ReturnValue.Reference; taint | +| 2 | Summary: ::write_fmt; Argument[0]; Argument[self].Reference; taint | +| 3 | Summary: ::write_str; Argument[0].Reference; Argument[self].Reference; taint | +| 4 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 5 | Summary: core::fmt::write; Argument[1]; Argument[0].Reference; taint | +| 6 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +edges +| main.rs:12:9:12:9 | a | main.rs:13:18:13:24 | MacroExpr | provenance | | +| main.rs:12:13:12:21 | source(...) | main.rs:12:9:12:9 | a | provenance | | +| main.rs:13:18:13:24 | ...::format(...) | main.rs:13:18:13:24 | { ... } | provenance | | +| main.rs:13:18:13:24 | ...::must_use(...) | main.rs:13:10:13:25 | MacroExpr | provenance | | +| main.rs:13:18:13:24 | MacroExpr | main.rs:13:18:13:24 | ...::format(...) | provenance | MaD:4 | +| main.rs:13:18:13:24 | { ... } | main.rs:13:18:13:24 | ...::must_use(...) | provenance | MaD:6 | +| main.rs:15:9:15:9 | b | main.rs:16:18:16:22 | MacroExpr | provenance | | +| main.rs:15:13:15:21 | source(...) | main.rs:15:9:15:9 | b | provenance | | +| main.rs:16:18:16:22 | ...::format(...) | main.rs:16:18:16:22 | { ... } | provenance | | +| main.rs:16:18:16:22 | ...::must_use(...) | main.rs:16:10:16:23 | MacroExpr | provenance | | +| main.rs:16:18:16:22 | MacroExpr | main.rs:16:18:16:22 | ...::format(...) | provenance | MaD:4 | +| main.rs:16:18:16:22 | { ... } | main.rs:16:18:16:22 | ...::must_use(...) | provenance | MaD:6 | +| main.rs:18:9:18:9 | c | main.rs:19:21:19:35 | MacroExpr | provenance | | +| main.rs:18:13:18:21 | source(...) | main.rs:18:9:18:9 | c | provenance | | +| main.rs:19:9:19:9 | s | main.rs:20:10:20:10 | s | provenance | | +| main.rs:19:21:19:35 | ...::format(...) | main.rs:19:21:19:35 | { ... } | provenance | | +| main.rs:19:21:19:35 | ...::must_use(...) | main.rs:19:9:19:9 | s | provenance | | +| main.rs:19:21:19:35 | MacroExpr | main.rs:19:21:19:35 | ...::format(...) | provenance | MaD:4 | +| main.rs:19:21:19:35 | { ... } | main.rs:19:21:19:35 | ...::must_use(...) | provenance | MaD:6 | +| main.rs:26:9:26:9 | a | main.rs:27:9:27:9 | b | provenance | | +| main.rs:26:13:26:21 | source(...) | main.rs:26:9:26:9 | a | provenance | | +| main.rs:27:9:27:9 | b | main.rs:28:30:28:30 | b | provenance | | +| main.rs:28:9:28:9 | c | main.rs:29:10:29:10 | c | provenance | | +| main.rs:28:13:28:31 | ...::format(...) | main.rs:28:9:28:9 | c | provenance | | +| main.rs:28:30:28:30 | b | main.rs:28:13:28:31 | ...::format(...) | provenance | MaD:4 | +| main.rs:32:9:32:9 | d | main.rs:33:28:33:28 | d | provenance | | +| main.rs:32:13:32:21 | source(...) | main.rs:32:9:32:9 | d | provenance | | +| main.rs:33:13:33:16 | [post] buf1 | main.rs:34:10:34:13 | buf1 | provenance | | +| main.rs:33:28:33:28 | d | main.rs:33:28:33:37 | d.as_str() [&ref] | provenance | MaD:1 | +| main.rs:33:28:33:37 | d.as_str() [&ref] | main.rs:33:13:33:16 | [post] buf1 | provenance | MaD:3 | +| main.rs:37:9:37:9 | e | main.rs:38:28:38:46 | MacroExpr | provenance | | +| main.rs:37:13:37:21 | source(...) | main.rs:37:9:37:9 | e | provenance | | +| main.rs:38:13:38:16 | [post] buf2 | main.rs:39:10:39:13 | buf2 | provenance | | +| main.rs:38:28:38:46 | MacroExpr | main.rs:38:13:38:16 | [post] buf2 | provenance | MaD:2 | +| main.rs:42:9:42:9 | f | main.rs:43:40:43:58 | MacroExpr | provenance | | +| main.rs:42:13:42:21 | source(...) | main.rs:42:9:42:9 | f | provenance | | +| main.rs:43:29:43:37 | [post] &mut buf3 [&ref] | main.rs:43:34:43:37 | [post] buf3 | provenance | | +| main.rs:43:34:43:37 | [post] buf3 | main.rs:44:10:44:13 | buf3 | provenance | | +| main.rs:43:40:43:58 | MacroExpr | main.rs:43:29:43:37 | [post] &mut buf3 [&ref] | provenance | MaD:5 | +| main.rs:48:9:48:9 | g | main.rs:49:26:49:32 | MacroExpr | provenance | | +| main.rs:48:13:48:21 | source(...) | main.rs:48:9:48:9 | g | provenance | | +| main.rs:49:20:49:23 | [post] buf4 | main.rs:50:10:50:13 | buf4 | provenance | | +| main.rs:49:26:49:32 | MacroExpr | main.rs:49:20:49:23 | [post] buf4 | provenance | MaD:2 | +| main.rs:53:9:53:9 | h | main.rs:54:28:54:32 | MacroExpr | provenance | | +| main.rs:53:13:53:21 | source(...) | main.rs:53:9:53:9 | h | provenance | | +| main.rs:54:22:54:25 | [post] buf5 | main.rs:55:10:55:13 | buf5 | provenance | | +| main.rs:54:28:54:32 | MacroExpr | main.rs:54:22:54:25 | [post] buf5 | provenance | MaD:2 | +nodes +| main.rs:12:9:12:9 | a | semmle.label | a | +| main.rs:12:13:12:21 | source(...) | semmle.label | source(...) | +| main.rs:13:10:13:25 | MacroExpr | semmle.label | MacroExpr | +| main.rs:13:18:13:24 | ...::format(...) | semmle.label | ...::format(...) | +| main.rs:13:18:13:24 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| main.rs:13:18:13:24 | MacroExpr | semmle.label | MacroExpr | +| main.rs:13:18:13:24 | { ... } | semmle.label | { ... } | +| main.rs:15:9:15:9 | b | semmle.label | b | +| main.rs:15:13:15:21 | source(...) | semmle.label | source(...) | +| main.rs:16:10:16:23 | MacroExpr | semmle.label | MacroExpr | +| main.rs:16:18:16:22 | ...::format(...) | semmle.label | ...::format(...) | +| main.rs:16:18:16:22 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| main.rs:16:18:16:22 | MacroExpr | semmle.label | MacroExpr | +| main.rs:16:18:16:22 | { ... } | semmle.label | { ... } | +| main.rs:18:9:18:9 | c | semmle.label | c | +| main.rs:18:13:18:21 | source(...) | semmle.label | source(...) | +| main.rs:19:9:19:9 | s | semmle.label | s | +| main.rs:19:21:19:35 | ...::format(...) | semmle.label | ...::format(...) | +| main.rs:19:21:19:35 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| main.rs:19:21:19:35 | MacroExpr | semmle.label | MacroExpr | +| main.rs:19:21:19:35 | { ... } | semmle.label | { ... } | +| main.rs:20:10:20:10 | s | semmle.label | s | +| main.rs:26:9:26:9 | a | semmle.label | a | +| main.rs:26:13:26:21 | source(...) | semmle.label | source(...) | +| main.rs:27:9:27:9 | b | semmle.label | b | +| main.rs:28:9:28:9 | c | semmle.label | c | +| main.rs:28:13:28:31 | ...::format(...) | semmle.label | ...::format(...) | +| main.rs:28:30:28:30 | b | semmle.label | b | +| main.rs:29:10:29:10 | c | semmle.label | c | +| main.rs:32:9:32:9 | d | semmle.label | d | +| main.rs:32:13:32:21 | source(...) | semmle.label | source(...) | +| main.rs:33:13:33:16 | [post] buf1 | semmle.label | [post] buf1 | +| main.rs:33:28:33:28 | d | semmle.label | d | +| main.rs:33:28:33:37 | d.as_str() [&ref] | semmle.label | d.as_str() [&ref] | +| main.rs:34:10:34:13 | buf1 | semmle.label | buf1 | +| main.rs:37:9:37:9 | e | semmle.label | e | +| main.rs:37:13:37:21 | source(...) | semmle.label | source(...) | +| main.rs:38:13:38:16 | [post] buf2 | semmle.label | [post] buf2 | +| main.rs:38:28:38:46 | MacroExpr | semmle.label | MacroExpr | +| main.rs:39:10:39:13 | buf2 | semmle.label | buf2 | +| main.rs:42:9:42:9 | f | semmle.label | f | +| main.rs:42:13:42:21 | source(...) | semmle.label | source(...) | +| main.rs:43:29:43:37 | [post] &mut buf3 [&ref] | semmle.label | [post] &mut buf3 [&ref] | +| main.rs:43:34:43:37 | [post] buf3 | semmle.label | [post] buf3 | +| main.rs:43:40:43:58 | MacroExpr | semmle.label | MacroExpr | +| main.rs:44:10:44:13 | buf3 | semmle.label | buf3 | +| main.rs:48:9:48:9 | g | semmle.label | g | +| main.rs:48:13:48:21 | source(...) | semmle.label | source(...) | +| main.rs:49:20:49:23 | [post] buf4 | semmle.label | [post] buf4 | +| main.rs:49:26:49:32 | MacroExpr | semmle.label | MacroExpr | +| main.rs:50:10:50:13 | buf4 | semmle.label | buf4 | +| main.rs:53:9:53:9 | h | semmle.label | h | +| main.rs:53:13:53:21 | source(...) | semmle.label | source(...) | +| main.rs:54:22:54:25 | [post] buf5 | semmle.label | [post] buf5 | +| main.rs:54:28:54:32 | MacroExpr | semmle.label | MacroExpr | +| main.rs:55:10:55:13 | buf5 | semmle.label | buf5 | +subpaths +testFailures +#select +| main.rs:13:10:13:25 | MacroExpr | main.rs:12:13:12:21 | source(...) | main.rs:13:10:13:25 | MacroExpr | $@ | main.rs:12:13:12:21 | source(...) | source(...) | +| main.rs:16:10:16:23 | MacroExpr | main.rs:15:13:15:21 | source(...) | main.rs:16:10:16:23 | MacroExpr | $@ | main.rs:15:13:15:21 | source(...) | source(...) | +| main.rs:20:10:20:10 | s | main.rs:18:13:18:21 | source(...) | main.rs:20:10:20:10 | s | $@ | main.rs:18:13:18:21 | source(...) | source(...) | +| main.rs:29:10:29:10 | c | main.rs:26:13:26:21 | source(...) | main.rs:29:10:29:10 | c | $@ | main.rs:26:13:26:21 | source(...) | source(...) | +| main.rs:34:10:34:13 | buf1 | main.rs:32:13:32:21 | source(...) | main.rs:34:10:34:13 | buf1 | $@ | main.rs:32:13:32:21 | source(...) | source(...) | +| main.rs:39:10:39:13 | buf2 | main.rs:37:13:37:21 | source(...) | main.rs:39:10:39:13 | buf2 | $@ | main.rs:37:13:37:21 | source(...) | source(...) | +| main.rs:44:10:44:13 | buf3 | main.rs:42:13:42:21 | source(...) | main.rs:44:10:44:13 | buf3 | $@ | main.rs:42:13:42:21 | source(...) | source(...) | +| main.rs:50:10:50:13 | buf4 | main.rs:48:13:48:21 | source(...) | main.rs:50:10:50:13 | buf4 | $@ | main.rs:48:13:48:21 | source(...) | source(...) | +| main.rs:55:10:55:13 | buf5 | main.rs:53:13:53:21 | source(...) | main.rs:55:10:55:13 | buf5 | $@ | main.rs:53:13:53:21 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/format-macros-legacy/inline-taint-flow.ql b/rust/ql/test/library-tests/format-macros-legacy/inline-taint-flow.ql new file mode 100644 index 000000000000..5dcb7ee70a9d --- /dev/null +++ b/rust/ql/test/library-tests/format-macros-legacy/inline-taint-flow.ql @@ -0,0 +1,12 @@ +/** + * @kind path-problem + */ + +import rust +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/rust/ql/test/library-tests/format-macros-legacy/main.rs b/rust/ql/test/library-tests/format-macros-legacy/main.rs new file mode 100644 index 000000000000..641391211618 --- /dev/null +++ b/rust/ql/test/library-tests/format-macros-legacy/main.rs @@ -0,0 +1,74 @@ +// Verifies that dataflow through the format-family macros is recovered on +// pre-1.94 toolchains, where rust-analyzer no longer expands them and the +// extractor reconstructs the `FormatArgsExpr` (see `rust-toolchain.toml`). + +fn source(i: i64) -> String { + i.to_string() +} + +fn sink(_s: String) {} + +pub fn format_flow() { + let a = source(1); + sink(format!("{}", a)); // $ hasTaintFlow=1 + + let b = source(2); + sink(format!("{b}")); // $ hasTaintFlow=2 + + let c = source(3); + let s = format!("x={c} y={}", c); + sink(s); // $ hasTaintFlow=3 +} + +pub fn exercises_reconstruction() { + // these exercise reconstruction of the rest of the family, including the + // writer-argument handling of `write!`/`writeln!`. + let a = source(4); + let b = format_args!("{}", a); + let c = std::fmt::format(b); + sink(c); // $ hasTaintFlow=4 + + let mut buf1 = String::new(); + let d = source(5); + let _ = buf1.write_str(d.as_str()); + sink(buf1); // $ hasTaintFlow=5 + + let mut buf2 = String::new(); + let e = source(6); + let _ = buf2.write_fmt(format_args!("{e}")); + sink(buf2); // $ hasTaintFlow=6 + + let mut buf3 = String::new(); + let f = source(7); + let _ = std::fmt::write(&mut buf3, format_args!("{f}")); + sink(buf3); // $ hasTaintFlow=7 + + use std::fmt::Write; + let mut buf4 = String::new(); + let g = source(8); + let _ = write!(buf4, "{}", g); + sink(buf4); // $ hasTaintFlow=8 + + let mut buf5 = String::new(); + let h = source(9); + let _ = writeln!(buf5, "{h}"); + sink(buf5); // $ hasTaintFlow=9 +} + +// The log-injection sinks (`println!`/`eprintln!`/`panic!`) are reconstructed +// into their real callees (`_print`/`_eprint`/`panic_fmt`), so the manual sink +// models keep firing on <1.94 exactly as they do on native expansions. +pub fn log_injection_sinks() { + let tainted = std::env::var("USER_INPUT").unwrap_or_default(); // $ Source=environment + + println!("{}", tainted); // $ Alert[rust/log-injection]=environment + eprintln!("{tainted}"); // $ Alert[rust/log-injection]=environment + print!("{}", tainted); // $ Alert[rust/log-injection]=environment + eprint!("{tainted}"); // $ Alert[rust/log-injection]=environment +} + +fn main() { + format_flow(); + exercises_reconstruction(); + log_injection_sinks(); +} diff --git a/rust/ql/test/library-tests/format-macros-legacy/rust-toolchain.toml b/rust/ql/test/library-tests/format-macros-legacy/rust-toolchain.toml new file mode 100644 index 000000000000..da4efb0b5b53 --- /dev/null +++ b/rust/ql/test/library-tests/format-macros-legacy/rust-toolchain.toml @@ -0,0 +1,14 @@ +# Pinned to a pre-1.94 toolchain on purpose. +# +# rust-analyzer 0.0.347 only expands the builtin `format_args!` machinery against +# a std that carries the new lowering (roughly >= 1.94). On older toolchains the +# format-family macros (`format!`, `println!`, `write!`, ...) fail to expand, so +# the extractor reconstructs the `FormatArgsExpr` itself. This test exercises that +# reconstruction path, which the default test toolchain never hits. +# +# Any toolchain named here must also be pre-installed in `../setup.sh`, otherwise +# the parallel QL tests race on `rustup` auto-install. +[toolchain] +channel = "1.93" +profile = "minimal" +components = [ "rust-src" ] 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..fbcc3b920430 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 @@ -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,8 +2337,8 @@ 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 for u in vals4a {} // $ type=u:u16 @@ -2356,10 +2356,10 @@ mod loops { 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,16 @@ 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 +} + fn main() { field_access::f(); // $ target=f method_impl::f(); // $ target=f @@ -2835,4 +2845,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..077171db3ce6 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} | () | @@ -3564,12 +3489,9 @@ inferCertainType | 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 +3505,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 +3546,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 +3556,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 +3574,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 +3632,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 +3639,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:2589:14:2589:14 | b | | {EXTERNAL LOCATION} | bool | | 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 +3680,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 +3694,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 +3701,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 +3710,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 +3730,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 +3743,36 @@ 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:2813:11:2849:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2816:20:2816:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2816:41:2816:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2846:16:2846: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 | @@ -10235,13 +10002,9 @@ inferType | 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: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 +10037,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 +10050,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 +11036,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 +11043,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 +11050,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 +11249,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 +11305,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 +11330,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 +11419,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 +11466,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 +11490,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 +11503,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 +11631,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,14 +11667,18 @@ 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 | @@ -11963,9 +11686,6 @@ inferType | 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 | @@ -12012,10 +11732,6 @@ 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: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} | u64 | | main.rs:2352:33:2352:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | | main.rs:2352:39:2352:39 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2352:42:2352:42 | 3 | | {EXTERNAL LOCATION} | i32 | @@ -12046,28 +11762,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 +11812,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 +11820,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 +11840,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 +11863,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 +11884,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 +11915,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 +11947,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 +11955,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 +11965,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 +12299,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 +12373,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 +12402,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 +12422,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 +12653,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 +12682,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 +12721,74 @@ 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: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:2813:11:2849:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2814:5:2814:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2815:5:2815:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2816:5:2816:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2816:20:2816:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2816:41:2816:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2817:5:2817:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2818:5:2818:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2819:5:2819:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2820:5:2820:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2821:5:2821:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2822:5:2822:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2823:5:2823:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2824:5:2824:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2825:5:2825:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2826:5:2826:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2827:5:2827:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2828:5:2828:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2829:5:2829:24 | ...::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:2831:5:2831:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2832:5:2832:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2832:5:2832:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | +| main.rs:2833:5:2833:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2834:5:2834:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2835:5:2835:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2836:5:2836:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2837:5:2837:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2838:5:2838:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2839:5:2839:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2840:5:2840:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2841:5:2841:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2842:5:2842:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2843:5:2843:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2844:5:2844:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2845:5:2845:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2846:5:2846:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2846:5:2846:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2846:5:2846:20 | ...::f(...) | T | main.rs:2564:5:2566:5 | dyn MyTrait | +| main.rs:2846:5:2846:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2846:16:2846:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2847:5:2847:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2848:5:2848: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 +12797,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 +12809,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 +13110,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 +13120,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 +13184,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 +13212,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 +13256,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 +13320,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 +13334,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 +13359,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 +14336,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 +14362,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 +14376,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 +14399,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 +14568,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 +14650,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 +15203,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 +15221,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 +15347,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-312/CleartextLogging.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected index 6fb6fee32f28..1ccc9d616e34 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 | @@ -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 index 9343bef27c61..a2094a1d6e14 100644 --- a/rust/ql/test/rust-toolchain.toml +++ b/rust/ql/test/rust-toolchain.toml @@ -1,7 +1,12 @@ # This file specifies the Rust version used to test the rust extractor. # IMPORTANT: this can also have an impact on QL test results - +# +# Pinned to 1.95: this is the newest stable that both expands the builtin +# `format_args!` macro against std (needs >= ~1.94) and still accepts +# `use SomeStruct::{self};`, which became a hard error (E0432) in 1.96 and is +# exercised by the path-resolution test. Do not bump past 1.95 without +# adapting that test. [toolchain] -channel = "1.90" +channel = "1.95.0" profile = "minimal" components = [ "rust-src" ] diff --git a/rust/ql/test/setup.sh b/rust/ql/test/setup.sh index 1d7feb284eda..24fa06a70e44 100755 --- a/rust/ql/test/setup.sh +++ b/rust/ql/test/setup.sh @@ -8,8 +8,15 @@ 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.97.0 --profile minimal --component rust-src pushd ../../extractor/src/nightly-toolchain rustup install popd +# pre-1.94 toolchain exercising the extractor's `FormatArgsExpr` reconstruction +pushd library-tests/format-macros-legacy +rustup install +popd # this needs to be last to set the default toolchain rustup install diff --git a/rust/schema/annotations.py b/rust/schema/annotations.py index 10d7ec82a6cd..3c1ab3e4d43c 100644 --- a/rust/schema/annotations.py +++ b/rust/schema/annotations.py @@ -1055,6 +1055,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 +1295,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 +1315,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 +1539,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 _: """ @@ -1555,6 +1594,19 @@ class ParamBase(AstNode): 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 +1694,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 +2214,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..611e70896d4f 100644 --- a/rust/schema/ast.py +++ b/rust/schema/ast.py @@ -66,7 +66,7 @@ class ArrayTypeRepr(TypeRepr, ): element_type_repr: optional["TypeRepr"] | child class AsmClobberAbi(AsmPiece, ): - pass + attrs: list["Attr"] | child class AsmConst(AsmOperand, ): expr: optional["Expr"] | child @@ -89,6 +89,7 @@ class AsmOperandExpr(AstNode, ): class AsmOperandNamed(AsmPiece, ): asm_operand: optional["AsmOperand"] | child + attrs: list["Attr"] | child name: optional["Name"] | child class AsmOption(AstNode, ): @@ -96,6 +97,7 @@ class AsmOption(AstNode, ): class AsmOptionsList(AsmPiece, ): asm_options: list["AsmOption"] | child + attrs: list["Attr"] | child class AsmRegOperand(AsmOperand, ): asm_dir_spec: optional["AsmDirSpec"] | child @@ -222,6 +224,9 @@ class ContinueExpr(Expr, ): attrs: list["Attr"] | child lifetime: optional["Lifetime"] | child +class DerefPat(Pat, ): + pat: optional["Pat"] | child + class DynTraitTypeRepr(TypeRepr, ): type_bound_list: optional["TypeBoundList"] | child @@ -296,11 +301,8 @@ 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 @@ -338,9 +340,15 @@ 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 base: optional["Expr"] | child @@ -459,6 +467,10 @@ class Module(Item, ): 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,6 +480,9 @@ class NameRef(UseBoundGenericArg, ): class NeverTypeRepr(TypeRepr, ): pass +class NotNull(Pat, ): + pass + class OffsetOfExpr(Expr, ): attrs: list["Attr"] | child fields: list["NameRef"] | child @@ -522,6 +537,10 @@ 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 expr: optional["Expr"] | child @@ -561,6 +580,7 @@ class StructField(AstNode, ): attrs: list["Attr"] | 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 @@ -665,6 +685,7 @@ class Trait(Item, ): assoc_item_list: optional["AssocItemList"] | child attrs: list["Attr"] | child generic_param_list: optional["GenericParamList"] | child + impl_restriction: optional["ImplRestriction"] | child is_auto: predicate is_unsafe: predicate name: optional["Name"] | child @@ -686,6 +707,7 @@ class TupleExpr(Expr, ): class TupleField(AstNode, ): attrs: list["Attr"] | child + mut_restriction: optional["MutRestriction"] | child type_repr: optional["TypeRepr"] | child visibility: optional["Visibility"] | child @@ -775,6 +797,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, ): diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index f5005081b57a..677235474b91 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.32-dev groups: shared library: true dependencies: diff --git a/shared/controlflow/codeql/controlflow/ControlFlowGraph.qll b/shared/controlflow/codeql/controlflow/ControlFlowGraph.qll index c3f9868a638a..3b1ba8887584 100644 --- a/shared/controlflow/codeql/controlflow/ControlFlowGraph.qll +++ b/shared/controlflow/codeql/controlflow/ControlFlowGraph.qll @@ -284,6 +284,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`. */ @@ -1088,7 +1096,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 +1140,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 +1195,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 @@ -1283,7 +1299,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 @@ -1826,14 +1843,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 +1937,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 +1989,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 +2001,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 +2024,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 +2045,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 +2245,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; + + class Callable = Ast::Callable; + } - import CfgAlias + import Cfg_ } + private import test.TestCfg as TestCfg + private module Additional { /* * CFG printing @@ -2236,6 +2282,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 +2344,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 +2353,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 +2566,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..66ae31f61364 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.42-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 09e851c73c93..134205735fe7 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.14-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index e350a3a2ddbd..783f372bc478 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.58-dev groups: shared library: true dependencies: 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..af4358254944 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.7-dev groups: shared library: true dependencies: diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 83384e926bcb..044e243531fd 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.36-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 2b0eb43866da..6b4e8a5adede 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.58-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index d4ad24634326..ad414ca86d3d 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.58-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 92b8603a9d6e..07e6041a5142 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.34-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index a51fdda87b7f..84c172ce3f25 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.0.58-dev library: true groups: shared dataExtensions: diff --git a/shared/tree-sitter-extractor/Cargo.toml b/shared/tree-sitter-extractor/Cargo.toml index 61a66ab980e4..8b541ff73b0b 100644 --- a/shared/tree-sitter-extractor/Cargo.toml +++ b/shared/tree-sitter-extractor/Cargo.toml @@ -12,12 +12,12 @@ 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" 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" yeast = { path = "../yeast" } @@ -25,4 +25,4 @@ yeast = { path = "../yeast" } [dev-dependencies] tree-sitter-ql = "0.23.1" tree-sitter-json = "0.24.8" -rand = "0.10.1" +rand = "0.10.2" 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/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..ea90a8482894 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)) } diff --git a/shared/tree-sitter-extractor/src/generator/ql.rs b/shared/tree-sitter-extractor/src/generator/ql.rs index f114e251af21..19419a8465d0 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, ", ")?; @@ -109,7 +109,7 @@ impl fmt::Display for Class<'_> { is_final: false, return_type: None, formal_parameters: vec![], - body: charpred.clone(), + body: Some(charpred.clone()), overlay: None, } )?; @@ -307,7 +307,9 @@ pub struct Predicate<'a> { pub is_final: bool, pub return_type: Option>, pub formal_parameters: Vec>, - pub body: Expression<'a>, + /// The body of the predicate, or `None` if this is an `abstract` + /// predicate declaration with no body. + pub body: Option>, pub overlay: Option, } @@ -330,6 +332,9 @@ impl fmt::Display for Predicate<'_> { if self.is_final { write!(f, "final ")?; } + if self.body.is_none() { + write!(f, "abstract ")?; + } if self.overridden { write!(f, "override ")?; } @@ -344,7 +349,10 @@ impl fmt::Display for Predicate<'_> { } write!(f, "{param}")?; } - write!(f, ") {{ {} }}", self.body)?; + match &self.body { + Some(body) => write!(f, ") {{ {body} }}")?, + None => write!(f, ");")?, + } Ok(()) } @@ -365,7 +373,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..b6f3d45f4b12 100644 --- a/shared/tree-sitter-extractor/src/generator/ql_gen.rs +++ b/shared/tree-sitter-extractor/src/generator/ql_gen.rs @@ -1,3 +1,4 @@ +use std::collections::BTreeMap; use std::collections::BTreeSet; use crate::{generator::ql, node_types}; @@ -20,14 +21,14 @@ pub fn create_ast_node_class<'a>( is_final: false, return_type: Some(ql::Type::String), formal_parameters: vec![], - body: ql::Expression::Equals( + body: Some(ql::Expression::Equals( Box::new(ql::Expression::Var("result")), Box::new(ql::Expression::Dot( Box::new(ql::Expression::Var("this")), "getAPrimaryQlClass", vec![], )), - ), + )), overlay: None, }; let get_location = ql::Predicate { @@ -38,10 +39,10 @@ pub fn create_ast_node_class<'a>( is_final: true, return_type: Some(ql::Type::Normal("L::Location")), formal_parameters: vec![], - body: ql::Expression::Pred( + body: Some(ql::Expression::Pred( node_location_table, vec![ql::Expression::Var("this"), ql::Expression::Var("result")], - ), + )), overlay: None, }; let get_a_field_or_child = create_none_predicate( @@ -58,14 +59,14 @@ pub fn create_ast_node_class<'a>( is_final: true, return_type: Some(ql::Type::Facade("AstNode")), formal_parameters: vec![], - body: ql::Expression::Pred( + body: Some(ql::Expression::Pred( node_parent_table, vec![ ql::Expression::Var("this"), ql::Expression::Var("result"), ql::Expression::Var("_"), ], - ), + )), overlay: None, }; let get_parent_index = ql::Predicate { @@ -78,14 +79,14 @@ pub fn create_ast_node_class<'a>( is_final: true, return_type: Some(ql::Type::Int), formal_parameters: vec![], - body: ql::Expression::Pred( + body: Some(ql::Expression::Pred( node_parent_table, vec![ ql::Expression::Var("this"), ql::Expression::Var("_"), ql::Expression::Var("result"), ], - ), + )), overlay: None, }; let get_a_primary_ql_class = ql::Predicate { @@ -98,10 +99,10 @@ pub fn create_ast_node_class<'a>( is_final: false, return_type: Some(ql::Type::String), formal_parameters: vec![], - body: ql::Expression::Equals( + body: Some(ql::Expression::Equals( Box::new(ql::Expression::Var("result")), Box::new(ql::Expression::String("???")), - ), + )), overlay: None, }; let get_primary_ql_classes = ql::Predicate { @@ -116,7 +117,7 @@ pub fn create_ast_node_class<'a>( is_final: false, return_type: Some(ql::Type::String), formal_parameters: vec![], - body: ql::Expression::Equals( + body: Some(ql::Expression::Equals( Box::new(ql::Expression::Var("result")), Box::new(ql::Expression::Aggregate { name: "concat", @@ -129,7 +130,7 @@ pub fn create_ast_node_class<'a>( )), second_expr: Some(Box::new(ql::Expression::String(","))), }), - ), + )), overlay: None, }; ql::Class { @@ -163,7 +164,12 @@ pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Cl is_final: true, return_type: Some(ql::Type::String), formal_parameters: vec![], - body: create_get_field_expr_for_column_storage("result", tokeninfo, 1, tokeninfo_arity), + body: Some(create_get_field_expr_for_column_storage( + "result", + tokeninfo, + 1, + tokeninfo_arity, + )), overlay: None, }; let to_string = ql::Predicate { @@ -176,14 +182,14 @@ pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Cl is_final: true, return_type: Some(ql::Type::String), formal_parameters: vec![], - body: ql::Expression::Equals( + body: Some(ql::Expression::Equals( Box::new(ql::Expression::Var("result")), Box::new(ql::Expression::Dot( Box::new(ql::Expression::Var("this")), "getValue", vec![], )), - ), + )), overlay: None, }; ql::Class { @@ -223,12 +229,12 @@ pub fn create_trivia_token_class<'a>( is_final: true, return_type: Some(ql::Type::String), formal_parameters: vec![], - body: create_get_field_expr_for_column_storage( + body: Some(create_get_field_expr_for_column_storage( "result", trivia_tokeninfo, 1, trivia_tokeninfo_arity, - ), + )), overlay: None, }; let to_string = ql::Predicate { @@ -241,14 +247,14 @@ pub fn create_trivia_token_class<'a>( is_final: true, return_type: Some(ql::Type::String), formal_parameters: vec![], - body: ql::Expression::Equals( + body: Some(ql::Expression::Equals( Box::new(ql::Expression::Var("result")), Box::new(ql::Expression::Dot( Box::new(ql::Expression::Var("this")), "getValue", vec![], )), - ), + )), overlay: None, }; ql::Class { @@ -306,7 +312,7 @@ fn create_none_predicate<'a>( is_final: false, return_type, formal_parameters: Vec::new(), - body: ql::Expression::Pred("none", vec![]), + body: Some(ql::Expression::Pred("none", vec![])), overlay: None, } } @@ -324,10 +330,10 @@ fn create_get_a_primary_ql_class(class_name: &str, is_final: bool) -> ql::Predic is_final, return_type: Some(ql::Type::String), formal_parameters: vec![], - body: ql::Expression::Equals( + body: Some(ql::Expression::Equals( Box::new(ql::Expression::Var("result")), Box::new(ql::Expression::String(class_name)), - ), + )), overlay: None, } } @@ -342,13 +348,13 @@ pub fn create_is_overlay_predicate() -> ql::Predicate<'static> { return_type: None, overlay: Some(ql::OverlayAnnotation::Local), formal_parameters: vec![], - body: ql::Expression::Pred( + body: Some(ql::Expression::Pred( "databaseMetadata", vec![ ql::Expression::String("isOverlay"), ql::Expression::String("true"), ], - ), + )), } } @@ -368,7 +374,7 @@ pub fn create_get_node_file_predicate<'a>( name: "node", param_type: ql::Type::At(ast_node_name), }], - body: ql::Expression::Aggregate { + body: Some(ql::Expression::Aggregate { name: "exists", vars: vec![ql::FormalParameter { name: "loc", @@ -390,7 +396,7 @@ pub fn create_get_node_file_predicate<'a>( ], )), second_expr: None, - }, + }), } } @@ -415,7 +421,7 @@ pub fn create_discardable_ast_node_predicate(ast_node_name: &str) -> ql::Predica param_type: ql::Type::At(ast_node_name), }, ], - body: ql::Expression::And(vec![ + body: Some(ql::Expression::And(vec![ ql::Expression::Negation(Box::new(ql::Expression::Pred("isOverlay", vec![]))), ql::Expression::Equals( Box::new(ql::Expression::Var("file")), @@ -424,7 +430,7 @@ pub fn create_discardable_ast_node_predicate(ast_node_name: &str) -> ql::Predica vec![ql::Expression::Var("node")], )), ), - ]), + ])), } } @@ -444,7 +450,7 @@ pub fn create_discard_ast_node_predicate(ast_node_name: &str) -> ql::Predicate<' name: "node", param_type: ql::Type::At(ast_node_name), }], - body: ql::Expression::Aggregate { + body: Some(ql::Expression::Aggregate { name: "exists", vars: vec![ ql::FormalParameter { @@ -468,7 +474,7 @@ pub fn create_discard_ast_node_predicate(ast_node_name: &str) -> ql::Predicate<' ql::Expression::Pred("overlayChangedFiles", vec![ql::Expression::Var("path")]), ])), second_expr: None, - }, + }), } } @@ -493,7 +499,7 @@ pub fn create_discardable_location_predicate() -> ql::Predicate<'static> { param_type: ql::Type::At("location_default"), }, ], - body: ql::Expression::And(vec![ + body: Some(ql::Expression::And(vec![ ql::Expression::Negation(Box::new(ql::Expression::Pred("isOverlay", vec![]))), ql::Expression::Pred( "locations_default", @@ -506,7 +512,7 @@ pub fn create_discardable_location_predicate() -> ql::Predicate<'static> { ql::Expression::Var("_"), ], ), - ]), + ])), } } @@ -529,7 +535,7 @@ pub fn create_discard_location_predicate() -> ql::Predicate<'static> { name: "loc", param_type: ql::Type::At("location_default"), }], - body: ql::Expression::Aggregate { + body: Some(ql::Expression::Aggregate { name: "exists", vars: vec![ ql::FormalParameter { @@ -553,7 +559,7 @@ pub fn create_discard_location_predicate() -> ql::Predicate<'static> { ql::Expression::Pred("overlayChangedFiles", vec![ql::Expression::Var("path")]), ])), second_expr: None, - }, + }), } } @@ -760,7 +766,7 @@ fn create_field_getters<'a>( is_final: true, return_type: return_type.clone(), formal_parameters, - body, + body: Some(body), overlay: None, }]; @@ -773,14 +779,14 @@ fn create_field_getters<'a>( is_final: true, return_type, formal_parameters: vec![], - body: ql::Expression::Equals( + body: Some(ql::Expression::Equals( Box::new(ql::Expression::Var("result")), Box::new(ql::Expression::Dot( Box::new(ql::Expression::Var("this")), &field.getter_name, vec![ql::Expression::Var("_")], )), - ), + )), overlay: None, }); } @@ -828,6 +834,89 @@ fn class_supertypes<'a>( supertypes } +/// Returns whether `a` and `b` have the same signature, i.e. the same name, +/// return type, and formal parameters. Predicates with the same signature can +/// override one another. +fn same_predicate_signature(a: &ql::Predicate, b: &ql::Predicate) -> bool { + a.name == b.name && a.return_type == b.return_type && a.formal_parameters == b.formal_parameters +} + +/// Computes, for each tree-sitter supertype (union) node, the list of +/// predicates that are guaranteed to be defined identically (in terms of +/// name, return type, and formal parameters, though not necessarily body) by +/// every one of its members. These are the predicates that can be hoisted to +/// an `abstract` predicate on the union's class, with the corresponding +/// predicates on its members becoming `override`s. +/// +/// The result for a given node is memoized in `cache` (keyed by its QL class +/// name), and also used to answer the query for any other node that +/// (directly, or transitively through further supertypes) has that node as a +/// member. The same cache also serves as the answer to "what does the class +/// named X expose?", used by `is_predicate_inherited`. +fn compute_exposed_predicates<'a, 'b>( + type_name: &'a node_types::TypeName, + nodes: &'a node_types::NodeTypeMap, + field_predicates: &BTreeMap<&node_types::TypeName, Vec>>, + cache: &'b mut BTreeMap<&'a str, Vec>>, +) -> &'b Vec> { + let node = nodes.get(type_name); + let class_name = node.map_or(type_name.kind.as_str(), |node| node.ql_class_name.as_str()); + if !cache.contains_key(class_name) { + // Supertype declarations that recursively refer to themselves are a mistake, but we don't + // want to cause infinite recursion, so we insert a temporary sentinel. + cache.insert(class_name, Vec::new()); + let exposed = match node.map(|node| &node.kind) { + Some(node_types::EntryKind::Table { .. }) => { + field_predicates.get(type_name).cloned().unwrap_or_default() + } + Some(node_types::EntryKind::Union { members }) => { + let mut members = members.iter(); + let mut common = match members.next() { + Some(first) => { + compute_exposed_predicates(first, nodes, field_predicates, cache).clone() + } + None => Vec::new(), + }; + for member in members { + let member_predicates = + compute_exposed_predicates(member, nodes, field_predicates, cache); + common.retain(|predicate| { + member_predicates + .iter() + .any(|other| same_predicate_signature(predicate, other)) + }); + } + common + } + Some(node_types::EntryKind::Token { .. }) | None => Vec::new(), + }; + cache.insert(class_name, exposed); + } + cache.get(class_name).unwrap() +} + +/// Returns whether `predicate` (declared, or about to be declared, on the +/// class for `type_name`) is already exposed by one of `type_name`'s direct +/// supertypes, and therefore must be marked as an `override` (for a concrete +/// predicate) or can be omitted entirely (for an `abstract` one, since it's +/// already inherited). +fn is_predicate_inherited( + predicate: &ql::Predicate, + type_name: &node_types::TypeName, + direct_supertypes: &BTreeMap>, + exposed_predicates: &BTreeMap<&str, Vec>, +) -> bool { + direct_supertypes.get(type_name).is_some_and(|supertypes| { + supertypes.iter().any(|supertype| { + exposed_predicates.get(supertype).is_some_and(|predicates| { + predicates + .iter() + .any(|other| same_predicate_signature(predicate, other)) + }) + }) + }) +} + /// 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(); @@ -841,6 +930,71 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { } } + // First, compute the field-getter predicates (and the expressions used by + // `getAFieldOrChild`) for every table node, without yet knowing whether + // any of them will need to be marked `override`. These are needed both + // to build the final classes below, and to figure out which fields are + // shared identically by all the members of a supertype. + let mut field_predicates: BTreeMap<&node_types::TypeName, Vec>> = + BTreeMap::new(); + let mut get_child_exprs: BTreeMap<&node_types::TypeName, Vec>> = + BTreeMap::new(); + for (type_name, node) in nodes { + if let node_types::EntryKind::Table { + name: main_table_name, + fields, + } = &node.kind + { + if fields.is_empty() { + panic!("Encountered node '{}' with no fields", type_name.kind); + } + + // Count how many columns there will be in the main table. There + // will be one for the id, plus one for each field that's stored + // as a column. + let main_table_arity = 1 + fields + .iter() + .filter(|&f| matches!(f.storage, node_types::Storage::Column { .. })) + .count(); + + let mut main_table_column_index: usize = 0; + let mut predicates = Vec::new(); + let mut exprs = Vec::new(); + for field in fields { + let (get_preds, get_child_expr) = create_field_getters( + main_table_name, + main_table_arity, + &mut main_table_column_index, + field, + nodes, + ); + predicates.extend(get_preds); + if let Some(get_child_expr) = get_child_expr { + exprs.push(get_child_expr) + } + } + field_predicates.insert(type_name, predicates); + get_child_exprs.insert(type_name, exprs); + } + } + + // Next, for every supertype (union) node, compute the predicates that are + // guaranteed to be defined identically (in name, return type, and formal + // parameters) by every one of its members. Such predicates can be hoisted + // to an `abstract` predicate on the supertype's class, with the + // corresponding predicates on its members becoming `override`s. + let mut exposed_predicates: BTreeMap<&str, Vec>> = BTreeMap::new(); + for (type_name, node) in nodes { + if let node_types::EntryKind::Union { .. } = &node.kind { + compute_exposed_predicates( + type_name, + nodes, + &field_predicates, + &mut exposed_predicates, + ); + } + } + for (type_name, node) in nodes { match &node.kind { node_types::EntryKind::Token { kind_id: _ } => { @@ -865,7 +1019,26 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { } node_types::EntryKind::Union { members: _ } => { // It's a tree-sitter supertype node, so we're wrapping a dbscheme - // union type. + // union type. Any predicate that's identically defined by every + // member becomes an `abstract` predicate here. + let predicates = exposed_predicates + .get(node.ql_class_name.as_str()) + .cloned() + .unwrap_or_default() + .into_iter() + .map(|predicate| ql::Predicate { + overridden: is_predicate_inherited( + &predicate, + type_name, + &direct_supertypes, + &exposed_predicates, + ), + is_private: false, + is_final: false, + body: None, + ..predicate + }) + .collect(); classes.push(ql::TopLevel::Class(ql::Class { qldoc: None, name: &node.ql_class_name, @@ -879,25 +1052,10 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { &direct_supertypes, ), characteristic_predicate: None, - predicates: vec![], + predicates, })); } - node_types::EntryKind::Table { - name: main_table_name, - fields, - } => { - if fields.is_empty() { - panic!("Encountered node '{}' with no fields", type_name.kind); - } - - // Count how many columns there will be in the main table. There - // will be one for the id, plus one for each field that's stored - // as a column. - let main_table_arity = 1 + fields - .iter() - .filter(|&f| matches!(f.storage, node_types::Storage::Column { .. })) - .count(); - + node_types::EntryKind::Table { .. } => { let main_class_name = &node.ql_class_name; let mut main_class = ql::Class { qldoc: Some(format!("A class representing `{}` nodes.", type_name.kind)), @@ -915,26 +1073,30 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { predicates: vec![create_get_a_primary_ql_class(main_class_name, true)], }; - let mut main_table_column_index: usize = 0; - let mut get_child_exprs: Vec = Vec::new(); - - // Iterate through the fields, creating: - // - classes to wrap union types if fields need them, - // - 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( - main_table_name, - main_table_arity, - &mut main_table_column_index, - field, - nodes, - ); - main_class.predicates.extend(get_preds); - if let Some(get_child_expr) = get_child_expr { - get_child_exprs.push(get_child_expr) - } - } + // A field getter that's identically defined (in signature) by + // every member of one of this node's direct supertypes is an + // override of the corresponding `abstract` predicate declared + // there. + main_class.predicates.extend( + field_predicates + .get(type_name) + .cloned() + .unwrap_or_default() + .into_iter() + .map(|predicate| { + let overridden = predicate.overridden + || is_predicate_inherited( + &predicate, + type_name, + &direct_supertypes, + &exposed_predicates, + ); + ql::Predicate { + overridden, + ..predicate + } + }), + ); main_class.predicates.push(ql::Predicate { qldoc: Some(String::from("Gets a field or child node of this node.")), @@ -944,7 +1106,9 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { is_final: true, return_type: Some(ql::Type::Facade("AstNode")), formal_parameters: vec![], - body: ql::Expression::Or(get_child_exprs), + body: Some(ql::Expression::Or( + get_child_exprs.get(type_name).cloned().unwrap_or_default(), + )), overlay: None, }); @@ -1038,7 +1202,7 @@ pub fn create_print_ast_module(nodes: &node_types::NodeTypeMap) -> ql::TopLevel< param_type: ql::Type::Int, }, ], - body: ql::Expression::Or(disjuncts), + body: Some(ql::Expression::Or(disjuncts)), overlay: None, }; diff --git a/shared/tree-sitter-extractor/src/node_types.rs b/shared/tree-sitter-extractor/src/node_types.rs index 65217c8a28b6..2967bc845802 100644 --- a/shared/tree-sitter-extractor/src/node_types.rs +++ b/shared/tree-sitter-extractor/src/node_types.rs @@ -130,7 +130,7 @@ 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 @@ -156,8 +156,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 +203,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 +238,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 +261,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 +273,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(), } 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/qlpack.yml b/shared/tutorial/qlpack.yml index 2c2dde8c1793..fa374cda8f72 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.58-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 6ea63f761cdd..4dd13d3aad94 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.58-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index b90c53ebdbaa..399e5d818c87 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; @@ -146,10 +90,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 +133,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. @@ -647,7 +562,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] @@ -1258,8 +1174,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 +1225,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,14 +1261,6 @@ 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) - ) - } - /** * Gets the type of the type argument at `path` in `a` that corresponds to * the type parameter `tp` in `target`, if any. @@ -1365,10 +1272,10 @@ module Make1 Input1> { 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 = a.getTypeArgument(pos, path) and + tp = target.getTypeParameter(pos) and + not result instanceof PseudoType ) } @@ -1646,8 +1553,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 +1587,6 @@ module Make1 Input1> { TypeParameter tp ) { typeParameterHasConstraint(target, constrainedTp, constraint) and - tp = target.getTypeParameter(_) and tp = constraint.getTypeAt(pathToTp) and constrainedTp != tp } @@ -1691,8 +1603,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 @@ -1817,7 +1733,7 @@ module Make1 Input1> { * * fn bar>(x: T1, y: T2) {} * - * let x : i32 = ...; + * let x: i32 = ...; * let y = MyThing(Default::default()); * bar(x, y); * ``` @@ -1869,8 +1785,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 +1828,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 +1911,1604 @@ 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. */ + 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 extends AstNode { + /** + * 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(); + } + + /** + * 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; + + /** 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, Expr; + + /** + * 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 + + private predicate closureStep(AstNode pattern, TypePath prefix1, Closure c, TypePath prefix2) { + exists(Parameter p | + pattern = p.getPattern() and + p = c.getParameter(_) and + prefix1.isEmpty() and + prefix2 = getClosureParameterTypePath(p) + ) + } + + /** + * 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(Closure c, TypePath suffix | + n = c 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 + 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 + result = getClosureType(n) 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 and + prefix1.isEmpty() and + prefix2 = getClosureReturnTypePath(n2) + ) + } + + 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 result.(ClosureParameterPseudoType).getParameter() = n.(Closure).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] + private 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(c, path, p) and + n = c 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 | + p = c.getParameter(_) and + not exists(p.getType()) + | + // step 1 + n = c and + path = getClosureParameterTypePath(p) and + result instanceof UnknownType + or + // step 3 + n = p.getPattern() and + result = inferType(c, getClosureParameterTypePath(p).appendInverse(path)) and + not (path.isEmpty() and result instanceof UnknownType) + ) + } + } + + /** + * 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) + } + + /** + * 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 result.(ClosureParameterPseudoType).getParameter() = n.(Closure).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..68db81a4851b 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.39-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 854d8bae6da0..9b52023e6343 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.42-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 712073d7668a..ade80e7678f0 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.58-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/codeql/util/UnboundList.qll b/shared/util/codeql/util/UnboundList.qll index 6f05d6cddfc2..622895a6bd01 100644 --- a/shared/util/codeql/util/UnboundList.qll +++ b/shared/util/codeql/util/UnboundList.qll @@ -186,10 +186,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..0a61f3903159 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.45-dev groups: shared library: true dependencies: null diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index c9251eb88c4d..133a3b9dac86 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.58-dev groups: shared library: true dependencies: diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index ccc990b27d02..14b67df2f8d1 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.58-dev 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-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..1c101efd816f 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.6", 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/src/lib.rs b/shared/yeast/src/lib.rs index 94f75faa4763..76bfa58124d6 100644 --- a/shared/yeast/src/lib.rs +++ b/shared/yeast/src/lib.rs @@ -323,7 +323,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 +340,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 +383,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() } }, @@ -571,11 +591,17 @@ 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 + // the inherited rule-match range, so tokens matched by a rule but + // elided from its output still contribute to the replacement range. _ => self .union_source_range_of_children(&fields) - .or(source_range), + .map_or(source_range, |child_range| { + Some(match source_range { + Some(source_range) => union_source_ranges(child_range, source_range), + None => child_range, + }) + }), }; let id = self.nodes.len(); self.nodes.push(Node { @@ -766,6 +792,25 @@ impl Ast { } } +fn union_source_ranges(first: Range, second: Range) -> Range { + let (start_byte, start_point) = if first.start_byte <= second.start_byte { + (first.start_byte, first.start_point) + } else { + (second.start_byte, second.start_point) + }; + let (end_byte, end_point) = if first.end_byte >= second.end_byte { + (first.end_byte, first.end_point) + } else { + (second.end_byte, second.end_point) + }; + Range { + start_byte, + end_byte, + start_point, + end_point, + } +} + /// A node in our AST #[derive(PartialEq, Eq, Debug, Clone, Serialize)] pub struct Node { diff --git a/shared/yeast/tests/test.rs b/shared/yeast/tests/test.rs index 60ed8afe84dd..35393685b5ca 100644 --- a/shared/yeast/tests/test.rs +++ b/shared/yeast/tests/test.rs @@ -1663,6 +1663,39 @@ 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); +} + // ---- `rules!` macro tests (compile-time type-checking) ---- /// `rules!` should accept well-typed rules using the bare-rule-body diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index dd31b62e1481..9806fded2032 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.4-dev 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/qlpack.yml b/swift/ql/src/qlpack.yml index fd6ec0e549bc..aa419cb33887 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.11-dev 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/extractor/Cargo.toml b/unified/extractor/Cargo.toml index 607afc40458b..d4bce75cf7fa 100644 --- a/unified/extractor/Cargo.toml +++ b/unified/extractor/Cargo.toml @@ -7,14 +7,14 @@ 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" +serde_json = "1.0.151" 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..f1ee78f1c621 100644 --- a/unified/extractor/ast_types.yml +++ b/unified/extractor/ast_types.yml @@ -1,11 +1,14 @@ 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 @@ -33,25 +36,16 @@ supertypes: - switch_expr - unresolved_operator_sequence - unsupported_node - - pattern - expr_or_type: - - expr - - type_expr + - or_pattern + - conditional_pattern + - bulk_importing_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. @@ -91,13 +85,6 @@ supertypes: - 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 type_constraint: - equality_type_constraint - bound_type_constraint @@ -111,9 +98,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 +130,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 @@ -175,28 +174,23 @@ named: # # 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 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 +205,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 +222,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 +272,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 +285,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 +315,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 @@ -372,7 +365,7 @@ named: catch_clause: modifier*: modifier - pattern?: pattern + pattern?: expr body: block # `switch value { case pattern: body case ...: default: body }` @@ -386,7 +379,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 +389,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 +397,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,29 +417,14 @@ 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 simple unqualified name token identifier: # A node that we don't yet translate @@ -494,27 +442,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 +477,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 +490,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 +514,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 +530,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/languages/swift/adapter.rs b/unified/extractor/src/languages/swift/adapter.rs index ae245eb21e80..f1ae56d6c4c2 100644 --- a/unified/extractor/src/languages/swift/adapter.rs +++ b/unified/extractor/src/languages/swift/adapter.rs @@ -61,10 +61,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. @@ -158,16 +219,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 +249,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 +265,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 +298,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). @@ -276,10 +313,11 @@ const SWIFT_NODE_TYPES: &str = include_str!("../../../swift_node_types.yml"); /// 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 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). @@ -297,23 +335,28 @@ mod tests { /// 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 +420,72 @@ 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 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 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..e355cbb96dce 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -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, } @@ -108,22 +105,28 @@ 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( ctx: &mut yeast::build::BuildCtx<'_, SwiftContext>, parts: Vec, ) -> yeast::Id { + // `member_chain` builds the imported expression inside the larger import + // declaration rule. The imported expression should span the import path, + // not the whole declaration including the `import` keyword. + let source_range = ctx.source_range.take(); let mut iter = parts.into_iter(); let first = iter .next() .expect("identifier with `part:` must have at least one part"); - let init = tree!((name_expr identifier: (identifier #{first}))); - iter.fold( + let init = tree!((identifier #{first})); + let result = 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}))), + ); + ctx.source_range = source_range; + result } /// Compound-assignment operator spellings (`+=`, `<<=`, ...). Used to tell a @@ -159,28 +162,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 @@ -195,22 +210,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 - } + 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}))), + // the target AST represents it as a `name_node` over the `_` token. + rule!((discardAssignmentExpr wildcard: @@w) => (identifier #{w})), // A generic specialization in expression position (`C`, // `Array`) is represented by swift-syntax as a // `genericSpecializationExpr`. When used as a call target @@ -222,7 +231,7 @@ 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}) ), // ---- Operators ---- @@ -288,14 +297,14 @@ fn translation_rules() -> Vec> { 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)), + // 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})), // ---- Properties with accessors ---- @@ -314,7 +323,7 @@ fn translation_rules() -> Vec> { => (accessor_declaration modifier: (modifier #{spec}) - name: (identifier #{name}) + name_node: (identifier #{name}) type: {ty} accessor_kind: (accessor_kind "get") body: (block stmt: {body})) @@ -345,7 +354,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 +366,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 +401,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 { @@ -406,7 +415,7 @@ fn translation_rules() -> Vec> { (accessor_declaration modifier: {binding} modifier: {chained} - name: {name} + name_node: {name} type: {ty} accessor_kind: (accessor_kind #{spec}) body: {body}) @@ -465,7 +474,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 @@ -481,7 +490,7 @@ fn translation_rules() -> Vec> { modifier: {ctx.outer_modifiers.clone()} modifier: {chained_modifier(&mut ctx)} modifier: (modifier "enum_case") - name: (identifier #{name}) + name_node: (identifier #{name}) member: (constructor_declaration parameter: {params} body: (block))) ), rule!( @@ -491,7 +500,7 @@ fn translation_rules() -> Vec> { 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!( @@ -501,7 +510,7 @@ fn translation_rules() -> Vec> { 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 @@ -527,20 +536,23 @@ fn translation_rules() -> Vec> { rule!( (identifierPattern identifier: @name) => - (name_pattern identifier: (identifier #{name})) + (identifier #{name}) ), // 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 +562,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 => (identifier #{wildcard})), // An expression pattern only establishes pattern context; its child // determines the concrete pattern shape. rule!((expressionPattern expression: @@e) => expr { @@ -564,6 +576,7 @@ fn translation_rules() -> Vec> { // an empty `block`. rule!( (functionDecl + modifiers: _* @mods name: @name genericParameterClause: (genericParameterClause parameters: _* @type_params)? signature: (functionSignature @@ -572,7 +585,8 @@ fn translation_rules() -> Vec> { body: (codeBlock statements: _* @body)) => (function_declaration - name: (identifier #{name}) + modifier: {mods} + name_node: (identifier #{name}) type_parameter: {type_params} parameter: {params} return_type: {ret} @@ -580,6 +594,7 @@ fn translation_rules() -> Vec> { ), rule!( (functionDecl + modifiers: _* @mods name: @name genericParameterClause: (genericParameterClause parameters: _* @type_params)? signature: (functionSignature @@ -587,7 +602,8 @@ fn translation_rules() -> Vec> { returnClause: (returnClause type: @ret)?)) => (function_declaration - name: (identifier #{name}) + modifier: {mods} + name_node: (identifier #{name}) type_parameter: {type_params} parameter: {params} return_type: {ret} @@ -610,8 +626,8 @@ fn translation_rules() -> Vec> { None => (None, first), }; tree!((parameter - external_name: {external} - pattern: (name_pattern identifier: (identifier #{name})) + external_name_node: {external} + pattern: (identifier #{name}) type: {ty} default: {val})) } @@ -629,7 +645,7 @@ fn translation_rules() -> Vec> { => (call_expr callee: (generic_type_expr - base: (named_type_expr name: (identifier "Array")) + base: (identifier "Array") type_argument: {element}) argument: {args} argument: (argument value: {tc})) @@ -641,7 +657,7 @@ fn translation_rules() -> Vec> { => (call_expr callee: (generic_type_expr - base: (named_type_expr name: (identifier "Array")) + base: (identifier "Array") type_argument: {element}) argument: {args}) ), @@ -663,20 +679,11 @@ 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})) - } + 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. + // A call or enum-case pattern argument. Both use the shared `argument` + // shape, preserving the optional label as `name` and the child as `value`. // The pattern-only shapes (`patternExpr`, `discardAssignmentExpr`) are // matched first; they never occur as ordinary call arguments. rule!( @@ -687,40 +694,26 @@ fn translation_rules() -> Vec> { 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!((argument + name_node: (identifier #{lbl})? + value: (call_expr callee: {constructor} argument: {elements}))) } ), rule!( (labeledExpr label: _? @@lbl expression: (patternExpr pattern: @p)) => - (pattern_element key: (identifier #{lbl})? pattern: {p}) + (argument name_node: (identifier #{lbl})? value: {p}) ), rule!( (labeledExpr label: _? @@lbl expression: (discardAssignmentExpr) @@wildcard) => - (pattern_element key: (identifier #{lbl})? pattern: (ignore_pattern #{wildcard})) + (argument name_node: (identifier #{lbl})? value: (identifier #{wildcard})) ), rule!( (labeledExpr label: _? @@lbl expression: @val) => argument { - if ctx.in_pattern { - tree!((pattern_element - key: (identifier #{lbl})? - pattern: {val})) - } else { - tree!((argument name: (identifier #{lbl})? value: {val})) - } + tree!((argument name_node: (identifier #{lbl})? value: {val})) } ), // Member access (`list.append`). The `declName` is itself a @@ -737,26 +730,26 @@ fn translation_rules() -> Vec> { => (member_access_expr base: (generic_type_expr - base: (named_type_expr name: (identifier "Array")) + base: (identifier "Array") type_argument: {element}) - member: (identifier #{member})) + member_name_node: (identifier #{member})) ), rule!( (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)) => - (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 @@ -783,7 +776,7 @@ fn translation_rules() -> Vec> { ), // 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 + // captured name becomes the bound `name_node`; an explicit capture // initializer (`[y = expr]`) becomes the bound value. rule!( (closureCapture @@ -793,7 +786,7 @@ fn translation_rules() -> Vec> { => (variable_declaration modifier: (modifier #{spec})? - pattern: (name_pattern identifier: (identifier #{name})) + pattern: (identifier #{name}) value: {val}) ), // A closure parameter clause (`(x: Int, y)`) unwraps to its parameters. @@ -803,14 +796,14 @@ fn translation_rules() -> Vec> { rule!( (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) => - (parameter pattern: (name_pattern identifier: (identifier #{name}))) + (parameter pattern: (identifier #{name})) ), // ---- Control flow ---- // An `if`/`else` expression. Conditions are joined via `and_chain`; the @@ -881,18 +874,22 @@ fn translation_rules() -> Vec> { => (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 "let") + expr: (identifier #{name}))))) ), rule!( (optionalBindingCondition 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 "let") + expr: (identifier #{name}))))) ), // A single condition in an `if`/`while`/`guard` condition list unwraps to // its inner expression; `and_chain` joins multiple with `&&`. @@ -936,7 +933,7 @@ fn translation_rules() -> Vec> { 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 @@ -964,11 +961,11 @@ fn translation_rules() -> Vec> { 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 } @@ -1026,10 +1023,10 @@ fn translation_rules() -> Vec> { rule!((forceUnwrapExpr expression: @e) => (unary_expr operator: (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. @@ -1041,12 +1038,13 @@ fn translation_rules() -> Vec> { path: (importPathComponent name: @@parts)*) => 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 => tree!((named_pattern + name_node: (identifier #{last}) + sub_pattern: (bulk_importing_pattern))), + Some(_) => tree!((identifier #{last})), + }; tree!((import_declaration modifier: (modifier #{kind})? modifier: {attrs} @@ -1075,75 +1073,75 @@ 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) => - 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})) } } ), @@ -1164,7 +1162,7 @@ fn translation_rules() -> Vec> { (type_parameter modifier: {attrs} modifier: (modifier #{spec})? - name: (identifier #{name}) + name_node: (identifier #{name}) bound: {bound}) ), rule!( @@ -1195,7 +1193,7 @@ 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} @@ -1218,7 +1216,7 @@ 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} @@ -1241,7 +1239,7 @@ 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} @@ -1262,28 +1260,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 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}) ), @@ -1324,7 +1319,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,7 +1332,7 @@ fn translation_rules() -> Vec> { => (associated_type_declaration modifier: {mods} - name: (identifier #{name}) + name_node: (identifier #{name}) bound: {bound}) ), // ---- Fallbacks ---- 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..64de98c7b745 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 @@ -66,24 +66,18 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" + pattern: identifier "f" value: function_expr capture_declaration: variable_declaration modifier: modifier "weak" - pattern: - name_pattern - identifier: identifier "self" + pattern: identifier "self" body: block stmt: call_expr callee: member_access_expr - base: - name_expr - identifier: identifier "self" - member: identifier "doThing" + base: identifier "self" + member_name_node: identifier "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..dca87eb8bebc 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 @@ -68,28 +68,18 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" + pattern: identifier "f" value: function_expr parameter: parameter - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "x" - return_type: - named_type_expr - name: identifier "Int" + type: identifier "Int" + pattern: identifier "x" + return_type: identifier "Int" body: block stmt: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator "*" right: int_literal "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..2473ae994abe 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 @@ -45,19 +45,13 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" + pattern: identifier "f" value: function_expr body: block stmt: binary_expr - left: - name_expr - identifier: identifier "$0" + left: identifier "$0" operator: infix_operator "+" - right: - name_expr - identifier: identifier "$1" + right: identifier "$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..83b9fec3302a 100644 --- a/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.output +++ b/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.output @@ -99,42 +99,28 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" + pattern: identifier "f" value: function_expr parameter: parameter - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "x" - return_type: - named_type_expr - name: identifier "Int" + type: identifier "Int" + pattern: identifier "x" + return_type: identifier "Int" body: block stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" + pattern: identifier "y" value: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator "+" right: int_literal "1" return_expr value: binary_expr - left: - name_expr - identifier: identifier "y" + left: identifier "y" operator: infix_operator "*" right: int_literal "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..399075b488db 100644 --- a/unified/extractor/tests/corpus/swift/closures/trailing-closure.output +++ b/unified/extractor/tests/corpus/swift/closures/trailing-closure.output @@ -46,10 +46,8 @@ top_level call_expr callee: member_access_expr - base: - name_expr - identifier: identifier "xs" - member: identifier "map" + base: identifier "xs" + member_name_node: identifier "map" argument: argument value: @@ -58,8 +56,6 @@ top_level block stmt: binary_expr - left: - name_expr - identifier: identifier "$0" + left: identifier "$0" operator: infix_operator "*" right: int_literal "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..b6fd3a4331bc 100644 --- a/unified/extractor/tests/corpus/swift/collections/array-literal.output +++ b/unified/extractor/tests/corpus/swift/collections/array-literal.output @@ -47,9 +47,7 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "xs" + pattern: identifier "xs" value: array_literal element: diff --git a/unified/extractor/tests/corpus/swift/collections/dictionary-literal.output b/unified/extractor/tests/corpus/swift/collections/dictionary-literal.output index edd306a69cbd..f2a2be74c780 100644 --- a/unified/extractor/tests/corpus/swift/collections/dictionary-literal.output +++ b/unified/extractor/tests/corpus/swift/collections/dictionary-literal.output @@ -58,7 +58,5 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "d" + pattern: identifier "d" value: map_literal "[\"a\": 1, \"b\": 2]" diff --git a/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output b/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output index e2f939e0683c..bf67e55bd23d 100644 --- a/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output +++ b/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output @@ -47,14 +47,10 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "v" + pattern: identifier "v" value: call_expr - callee: - name_expr - identifier: identifier "d" + callee: identifier "d" argument: argument value: string_literal "\"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..5e562153961b 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 @@ -43,15 +43,9 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "xs" + pattern: identifier "xs" type: generic_type_expr - base: - named_type_expr - name: identifier "Array" - type_argument: - named_type_expr - name: identifier "Int" + base: identifier "Array" + type_argument: identifier "Int" value: array_literal "[]" diff --git a/unified/extractor/tests/corpus/swift/collections/set-literal.output b/unified/extractor/tests/corpus/swift/collections/set-literal.output index a06670231ebb..071c7c4fcb70 100644 --- a/unified/extractor/tests/corpus/swift/collections/set-literal.output +++ b/unified/extractor/tests/corpus/swift/collections/set-literal.output @@ -62,17 +62,11 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "s" + pattern: identifier "s" type: generic_type_expr - base: - named_type_expr - name: identifier "Set" - type_argument: - named_type_expr - name: identifier "Int" + base: identifier "Set" + type_argument: identifier "Int" value: array_literal element: diff --git a/unified/extractor/tests/corpus/swift/collections/subscript-access.output b/unified/extractor/tests/corpus/swift/collections/subscript-access.output index ec24f0c1f1df..6067a9a90684 100644 --- a/unified/extractor/tests/corpus/swift/collections/subscript-access.output +++ b/unified/extractor/tests/corpus/swift/collections/subscript-access.output @@ -44,14 +44,10 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "first" + pattern: identifier "first" value: call_expr - callee: - name_expr - identifier: identifier "xs" + callee: identifier "xs" argument: argument value: int_literal "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..4a8a54078d9c 100644 --- a/unified/extractor/tests/corpus/swift/collections/tuple-literal.output +++ b/unified/extractor/tests/corpus/swift/collections/tuple-literal.output @@ -51,7 +51,13 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "t" - value: tuple_expr "(1, \"two\", 3.0)" + pattern: identifier "t" + value: + tuple_expr + element: + argument + value: int_literal "1" + argument + value: string_literal "\"two\"" + argument + value: float_literal "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..ed31af94f0aa 100644 --- a/unified/extractor/tests/corpus/swift/collections/tuple-member-access.output +++ b/unified/extractor/tests/corpus/swift/collections/tuple-member-access.output @@ -37,12 +37,8 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" + pattern: identifier "n" value: member_access_expr - base: - name_expr - identifier: identifier "t" - member: identifier "0" + base: identifier "t" + member_name_node: identifier "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..1a50d875f783 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 @@ -90,28 +90,18 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" + pattern: identifier "x" value: int_literal "1" switch_expr - value: - name_expr - identifier: identifier "y" + value: identifier "y" case: switch_case - pattern: - expr_equality_pattern - expr: - name_expr - identifier: identifier "someConstant" + pattern: identifier "someConstant" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"matched\"" 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..0a9adb11a990 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/defer-statement.output +++ b/unified/extractor/tests/corpus/swift/control-flow/defer-statement.output @@ -80,15 +80,13 @@ top_level block stmt: function_declaration - name: identifier "withCleanup" + name_node: identifier "withCleanup" body: block stmt: unsupported_node "defer { print(\"cleanup\") }" call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"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..c4418dba888b 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/discard-statement.output +++ b/unified/extractor/tests/corpus/swift/control-flow/discard-statement.output @@ -69,13 +69,14 @@ top_level stmt: class_like_declaration modifier: modifier "struct" - name: identifier "Resource" + name_node: identifier "Resource" base_type: base_type type: unsupported_node "~Copyable" member: function_declaration - name: identifier "close" + modifier: modifier "consuming" + name_node: identifier "close" body: block stmt: unsupported_node "discard self" diff --git a/unified/extractor/tests/corpus/swift/control-flow/fallthrough.output b/unified/extractor/tests/corpus/swift/control-flow/fallthrough.output index 9cfe81048402..a0920ac436aa 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/fallthrough.output +++ b/unified/extractor/tests/corpus/swift/control-flow/fallthrough.output @@ -87,28 +87,20 @@ top_level block stmt: function_declaration - name: identifier "classify" + name_node: identifier "classify" parameter: parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "x" + external_name_node: identifier "_" + type: identifier "Int" + pattern: identifier "x" body: block stmt: switch_expr - value: - name_expr - identifier: identifier "x" + value: identifier "x" case: switch_case - pattern: - expr_equality_pattern - expr: int_literal "1" + pattern: int_literal "1" body: block stmt: unsupported_node "fallthrough" 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..2eb1682529f1 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/guard-let.output +++ b/unified/extractor/tests/corpus/swift/control-flow/guard-let.output @@ -44,21 +44,18 @@ top_level condition: pattern_guard_expr pattern: - constructor_pattern - constructor: + call_expr + callee: 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" + base: identifier "Optional" + member_name_node: identifier "some" + argument: + argument + value: + expr_pattern + modifier: modifier "let" + expr: identifier "value" + value: identifier "optional" else: block stmt: return_expr "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..699609a26309 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,6 +61,54 @@ 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 --- @@ -68,24 +120,38 @@ top_level condition: pattern_guard_expr pattern: - name_pattern - identifier: identifier "x" + expr_pattern + modifier: modifier "let" + expr: identifier "x" value: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator "+" right: int_literal "10" then: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "x" + value: identifier "x" + if_expr + condition: + pattern_guard_expr + pattern: + expr_pattern + modifier: modifier "var" + expr: identifier "y" + value: + binary_expr + left: identifier "y" + operator: infix_operator "+" + right: int_literal "10" + then: + block + stmt: + compound_assign_expr + target: identifier "y" + operator: infix_operator "+=" + value: int_literal "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..82c5b6c468ca 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 @@ -115,18 +115,14 @@ top_level if_expr condition: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator ">" right: int_literal "0" then: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: int_literal "1" @@ -134,18 +130,14 @@ top_level if_expr condition: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator "<" right: int_literal "0" then: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: int_literal "2" @@ -153,9 +145,7 @@ top_level block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: int_literal "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..86c3b9cd876c 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/if-else.output +++ b/unified/extractor/tests/corpus/swift/control-flow/if-else.output @@ -80,35 +80,25 @@ top_level if_expr condition: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator ">" right: int_literal "0" then: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "x" + value: identifier "x" else: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: unary_expr - operand: - name_expr - identifier: identifier "x" + operand: identifier "x" operator: prefix_operator "-" 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..1a09a2874e9a 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 @@ -57,30 +57,23 @@ top_level condition: pattern_guard_expr pattern: - constructor_pattern - constructor: + call_expr + callee: 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" + base: identifier "Optional" + member_name_node: identifier "some" + argument: + argument + value: + expr_pattern + modifier: modifier "let" + expr: identifier "value" + value: identifier "optional" then: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "value" + value: identifier "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..c0a7cfd021d8 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/if-statement.output +++ b/unified/extractor/tests/corpus/swift/control-flow/if-statement.output @@ -55,20 +55,14 @@ top_level if_expr condition: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator ">" right: int_literal "0" then: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "x" + value: identifier "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..4d0afdcb77db 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 @@ -160,76 +160,62 @@ top_level block stmt: switch_expr - value: - name_expr - identifier: identifier "event" + value: identifier "event" case: switch_case 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" + expr_pattern + modifier: modifier "let" + expr: + call_expr + callee: + member_access_expr + base: inferred_type_expr "." + member_name_node: identifier "received" + argument: + argument + value: + call_expr + callee: + member_access_expr + base: inferred_type_expr "." + member_name_node: identifier "some" + argument: + argument + value: identifier "value" + argument + value: identifier "timestamp" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "value" + value: identifier "value" argument - value: - name_expr - identifier: identifier "timestamp" + value: identifier "timestamp" switch_case pattern: - constructor_pattern - constructor: + call_expr + callee: member_access_expr - base: - name_expr - identifier: identifier "Type" - member: identifier "some" - element: - pattern_element - pattern: - name_pattern - identifier: identifier "value" + base: identifier "Type" + member_name_node: identifier "some" + argument: + argument + value: + expr_pattern + modifier: modifier "let" + expr: identifier "value" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "value" + value: identifier "value" switch_case body: block 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..77adadc261b1 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 @@ -155,30 +155,25 @@ top_level block stmt: switch_expr - value: - name_expr - identifier: identifier "n" + value: identifier "n" case: switch_case pattern: conditional_pattern condition: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator ">" right: int_literal "0" pattern: - name_pattern - identifier: identifier "x" + expr_pattern + modifier: modifier "let" + expr: identifier "x" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"positive\"" @@ -189,23 +184,19 @@ top_level conditional_pattern condition: binary_expr - left: - name_expr - identifier: identifier "y" + left: identifier "y" operator: infix_operator "<" right: int_literal "0" pattern: - name_pattern - identifier: identifier "y" - expr_equality_pattern - expr: int_literal "0" + expr_pattern + modifier: modifier "let" + expr: identifier "y" + int_literal "0" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"non-positive\"" @@ -214,9 +205,7 @@ top_level block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"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..533f717b827e --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-expression-pattern.output @@ -0,0 +1,395 @@ +// 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 + body: + block + stmt: + switch_expr + value: identifier "subject" + case: + switch_case + pattern: + or_pattern + pattern: + identifier "value" + binary_expr + left: identifier "value" + operator: infix_operator "+" + right: identifier "offset" + unary_expr + operand: identifier "value" + operator: prefix_operator "-" + binary_expr + left: identifier "lower" + operator: infix_operator "..." + right: identifier "upper" + call_expr + callee: identifier "makeValue" + member_access_expr + base: + call_expr + callee: identifier "makeValue" + member_name_node: identifier "member" + member_access_expr + base: inferred_type_expr "." + member_name_node: identifier "inferred" + tuple_expr + element: + argument + value: identifier "value" + argument + value: identifier "offset" + array_literal + element: identifier "value" + map_literal "[key: value]" + call_expr + callee: + member_access_expr + base: identifier "Optional" + member_name_node: identifier "some" + argument: + argument + value: identifier "optional" + unary_expr + operand: identifier "value" + operator: prefix_operator "try" + unary_expr + operand: identifier "value" + operator: postfix_operator "!" + type_cast_expr + expr: identifier "value" + operator: infix_operator "as" + type: identifier "Target" + type_test_expr + expr: identifier "value" + operator: infix_operator "is" + type: identifier "Target" + unary_expr + operand: identifier "value" + operator: prefix_operator "await" + body: + block + stmt: + call_expr + callee: identifier "consume" + argument: + argument + value: identifier "value" + switch_case + pattern: + if_expr + condition: identifier "condition" + then: identifier "value" + else: identifier "fallback" + body: + block + stmt: + call_expr + callee: identifier "consume" + argument: + argument + value: identifier "fallback" + switch_case + body: + block + stmt: break_expr "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..3ba92e37ab8f 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/switch-statement.output +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-statement.output @@ -125,21 +125,15 @@ top_level block stmt: switch_expr - value: - name_expr - identifier: identifier "x" + value: identifier "x" case: switch_case - pattern: - expr_equality_pattern - expr: int_literal "1" + pattern: int_literal "1" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"one\"" @@ -147,17 +141,13 @@ top_level pattern: or_pattern pattern: - expr_equality_pattern - expr: int_literal "2" - expr_equality_pattern - expr: int_literal "3" + int_literal "2" + int_literal "3" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"two or three\"" @@ -166,9 +156,7 @@ top_level block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"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..5820da95f35c 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 @@ -120,55 +120,47 @@ top_level block stmt: switch_expr - value: - name_expr - identifier: identifier "shape" + value: identifier "shape" case: switch_case pattern: - constructor_pattern - constructor: + call_expr + callee: member_access_expr base: inferred_type_expr "." - member: identifier "circle" - element: - pattern_element - pattern: - name_pattern - identifier: identifier "r" + member_name_node: identifier "circle" + argument: + argument + value: + expr_pattern + modifier: modifier "let" + expr: identifier "r" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "r" + value: identifier "r" switch_case pattern: - constructor_pattern - constructor: + call_expr + callee: member_access_expr base: inferred_type_expr "." - member: identifier "square" - element: - pattern_element - pattern: - name_pattern - identifier: identifier "s" + member_name_node: identifier "square" + argument: + argument + value: + expr_pattern + modifier: modifier "let" + expr: identifier "s" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "s" + value: identifier "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..aca699ad6f74 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 @@ -128,57 +128,48 @@ top_level block stmt: switch_expr - value: - name_expr - identifier: identifier "x" + value: identifier "x" case: switch_case pattern: - constructor_pattern - constructor: + call_expr + callee: member_access_expr base: inferred_type_expr "." - member: identifier "implicit" - element: - pattern_element - key: identifier "isAcknowledged" - pattern: - expr_equality_pattern - expr: boolean_literal "false" + member_name_node: identifier "implicit" + argument: + argument + name_node: identifier "isAcknowledged" + value: boolean_literal "false" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"yes\"" switch_case pattern: - constructor_pattern - constructor: + call_expr + callee: 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" + member_name_node: identifier "thread" + argument: + argument + name_node: identifier "threadRowId" + value: identifier "_" + argument + value: + expr_pattern + modifier: modifier "let" + expr: identifier "rowId" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "rowId" + value: identifier "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..299d84c7822f 100644 --- a/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.output +++ b/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.output @@ -52,16 +52,12 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" + pattern: identifier "y" value: if_expr condition: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator ">" right: int_literal "0" then: int_literal "1" 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..e27b9c7089ec 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 @@ -25,10 +25,6 @@ top_level block stmt: binary_expr - left: - name_expr - identifier: identifier "foo" + left: identifier "foo" operator: infix_operator "+" - right: - name_expr - identifier: identifier "bar" + right: identifier "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..85e830e07383 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 @@ -32,12 +32,10 @@ top_level member_access_expr base: member_access_expr - base: - name_expr - identifier: identifier "Foundation" - member: identifier "Networking" - member: identifier "URLSession" + base: identifier "Foundation" + member_name_node: identifier "Networking" + member_name_node: identifier "URLSession" pattern: - name_pattern - identifier: identifier "URLSession" + named_pattern + name_node: identifier "URLSession" sub_pattern: bulk_importing_pattern "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..966d399f070d 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 @@ -27,11 +27,9 @@ top_level import_declaration imported_expr: member_access_expr - base: - name_expr - identifier: identifier "Foundation" - member: identifier "Networking" + base: identifier "Foundation" + member_name_node: identifier "Networking" pattern: - name_pattern - identifier: identifier "Networking" + named_pattern + name_node: identifier "Networking" sub_pattern: bulk_importing_pattern "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..6983e5408fbc 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 @@ -29,10 +29,6 @@ top_level modifier: modifier "struct" imported_expr: member_access_expr - base: - name_expr - identifier: identifier "Foundation" - member: identifier "Date" - pattern: - name_pattern - identifier: identifier "Date" + base: identifier "Foundation" + member_name_node: identifier "Date" + pattern: identifier "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..a7c401563932 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 @@ -22,10 +22,8 @@ top_level block stmt: import_declaration - imported_expr: - name_expr - identifier: identifier "Foundation" + imported_expr: identifier "Foundation" pattern: - name_pattern - identifier: identifier "Foundation" + named_pattern + name_node: identifier "Foundation" sub_pattern: bulk_importing_pattern "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..be59a73183d9 100644 --- a/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-constructor.output @@ -130,65 +130,43 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "values" + pattern: identifier "values" value: call_expr callee: generic_type_expr - base: - named_type_expr - name: identifier "Array" + base: identifier "Array" type_argument: generic_type_expr - base: - named_type_expr - name: identifier "Result" - type_argument: - named_type_expr - name: identifier "Void" + base: identifier "Result" + type_argument: identifier "Void" variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "initialized" + pattern: identifier "initialized" value: call_expr callee: generic_type_expr - base: - named_type_expr - name: identifier "Array" + base: identifier "Array" type_argument: generic_type_expr - base: - named_type_expr - name: identifier "Result" - type_argument: - named_type_expr - name: identifier "Void" + base: identifier "Result" + type_argument: identifier "Void" argument: argument - name: identifier "unsafeUninitializedCapacity" + name_node: identifier "unsafeUninitializedCapacity" value: int_literal "1" argument value: function_expr parameter: parameter - pattern: - name_pattern - identifier: identifier "_" + pattern: identifier "_" parameter - pattern: - name_pattern - identifier: identifier "count" + pattern: identifier "count" body: block stmt: assign_expr - target: - name_expr - identifier: identifier "count" + target: identifier "count" value: int_literal "0" 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..080cf34bb3c1 100644 --- a/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.output +++ b/unified/extractor/tests/corpus/swift/expressions/array-type-metatype.output @@ -54,22 +54,14 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "type" + pattern: identifier "type" value: member_access_expr base: generic_type_expr - base: - named_type_expr - name: identifier "Array" + base: identifier "Array" type_argument: generic_type_expr - base: - named_type_expr - name: identifier "Result" - type_argument: - named_type_expr - name: identifier "Void" - member: identifier "self" + base: identifier "Result" + type_argument: identifier "Void" + member_name_node: identifier "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..aedba985574d 100644 --- a/unified/extractor/tests/corpus/swift/expressions/consume-expression.output +++ b/unified/extractor/tests/corpus/swift/expressions/consume-expression.output @@ -68,9 +68,7 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "original" + pattern: identifier "original" value: array_literal element: @@ -79,7 +77,5 @@ top_level int_literal "3" variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "consumed" + pattern: identifier "consumed" value: unsupported_node "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..448dd95e78b3 100644 --- a/unified/extractor/tests/corpus/swift/expressions/copy-expression.output +++ b/unified/extractor/tests/corpus/swift/expressions/copy-expression.output @@ -68,9 +68,7 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "original" + pattern: identifier "original" value: array_literal element: @@ -79,7 +77,5 @@ top_level int_literal "3" variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "copied" + pattern: identifier "copied" value: unsupported_node "copy original" 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..b8b3a5a7903f 100644 --- a/unified/extractor/tests/corpus/swift/expressions/generic-specialization-expression.output +++ b/unified/extractor/tests/corpus/swift/expressions/generic-specialization-expression.output @@ -48,16 +48,10 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "numbers" + pattern: identifier "numbers" value: call_expr callee: generic_type_expr - base: - named_type_expr - name: identifier "Array" - type_argument: - named_type_expr - name: identifier "Int" + base: identifier "Array" + type_argument: identifier "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..c71105e4ee2e 100644 --- a/unified/extractor/tests/corpus/swift/expressions/key-path-expression.output +++ b/unified/extractor/tests/corpus/swift/expressions/key-path-expression.output @@ -42,7 +42,5 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "keyPath" + pattern: identifier "keyPath" value: unsupported_node "\\String.count" diff --git a/unified/extractor/tests/corpus/swift/expressions/unsafe-expression.output b/unified/extractor/tests/corpus/swift/expressions/unsafe-expression.output index 2bdc964ddeaa..a91bf6e2684c 100644 --- a/unified/extractor/tests/corpus/swift/expressions/unsafe-expression.output +++ b/unified/extractor/tests/corpus/swift/expressions/unsafe-expression.output @@ -46,6 +46,6 @@ top_level block stmt: function_declaration - name: identifier "doWork" + name_node: identifier "doWork" body: block "func doWork() {}" unsupported_node "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..13e99e707a86 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 @@ -75,20 +75,14 @@ top_level stmt: variable_declaration modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "a" + pattern: identifier "a" value: int_literal "1" variable_declaration modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "b" + pattern: identifier "b" value: int_literal "2" call_expr - callee: - name_expr - identifier: identifier "swap" + callee: identifier "swap" argument: argument value: unsupported_node "&a" 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..baf959c0cc86 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 @@ -82,25 +82,19 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "Foo" + name_node: identifier "Foo" class_like_declaration modifier: modifier "class" - name: identifier "C" + name_node: identifier "C" type_parameter: type_parameter - name: identifier "T" + name_node: identifier "T" variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" + pattern: identifier "x" value: call_expr callee: generic_type_expr - base: - named_type_expr - name: identifier "C" - type_argument: - named_type_expr - name: identifier "Foo" + base: identifier "C" + type_argument: identifier "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..81c2af30295d 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 @@ -33,10 +33,8 @@ top_level block stmt: call_expr - callee: - name_expr - identifier: identifier "greet" + callee: identifier "greet" argument: argument - name: identifier "person" + name_node: identifier "person" value: string_literal "\"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..35cac76d7bd1 100644 --- a/unified/extractor/tests/corpus/swift/functions/function-call.output +++ b/unified/extractor/tests/corpus/swift/functions/function-call.output @@ -32,9 +32,7 @@ top_level block stmt: call_expr - callee: - name_expr - identifier: identifier "foo" + callee: identifier "foo" argument: argument value: int_literal "1" 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..3d4c6483cb50 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 @@ -66,25 +66,17 @@ top_level block stmt: function_declaration - name: identifier "greet" + name_node: identifier "greet" parameter: parameter - type: - named_type_expr - name: identifier "String" - pattern: - name_pattern - identifier: identifier "name" + type: identifier "String" + pattern: identifier "name" default: string_literal "\"world\"" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "name" + value: identifier "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..198bb22bb29f 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 @@ -62,20 +62,16 @@ top_level block stmt: function_declaration - name: identifier "increment" + name_node: identifier "increment" parameter: parameter - external_name: identifier "_" + external_name_node: identifier "_" type: unsupported_node "inout Int" - pattern: - name_pattern - identifier: identifier "x" + pattern: identifier "x" body: block stmt: compound_assign_expr - target: - name_expr - identifier: identifier "x" + target: identifier "x" operator: infix_operator "+=" value: int_literal "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..6ad2a386ae8e 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 @@ -57,25 +57,17 @@ top_level block stmt: function_declaration - name: identifier "greet" + name_node: identifier "greet" parameter: parameter - external_name: identifier "person" - type: - named_type_expr - name: identifier "String" - pattern: - name_pattern - identifier: identifier "name" + external_name_node: identifier "person" + type: identifier "String" + pattern: identifier "name" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "name" + value: identifier "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..39c0b67786e2 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 @@ -52,14 +52,12 @@ top_level block stmt: function_declaration - name: identifier "greet" + name_node: identifier "greet" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"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..88311a0596e7 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 @@ -74,37 +74,23 @@ top_level block stmt: function_declaration - name: identifier "add" + name_node: identifier "add" parameter: parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "a" + external_name_node: identifier "_" + type: identifier "Int" + pattern: 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" + external_name_node: identifier "_" + type: identifier "Int" + pattern: identifier "b" + return_type: identifier "Int" body: block stmt: return_expr value: binary_expr - left: - name_expr - identifier: identifier "a" + left: identifier "a" operator: infix_operator "+" - right: - name_expr - identifier: identifier "b" + right: identifier "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..646ee6196166 100644 --- a/unified/extractor/tests/corpus/swift/functions/generic-function.output +++ b/unified/extractor/tests/corpus/swift/functions/generic-function.output @@ -64,26 +64,18 @@ top_level block stmt: function_declaration - name: identifier "identity" + name_node: identifier "identity" type_parameter: type_parameter - name: identifier "T" + name_node: identifier "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" + external_name_node: identifier "_" + type: identifier "T" + pattern: identifier "x" + return_type: identifier "T" body: block stmt: return_expr - value: - name_expr - identifier: identifier "x" + value: identifier "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..459aec5b784c 100644 --- a/unified/extractor/tests/corpus/swift/functions/generic-type-alias.output +++ b/unified/extractor/tests/corpus/swift/functions/generic-type-alias.output @@ -56,22 +56,16 @@ top_level block stmt: type_alias_declaration - name: identifier "Box" + name_node: identifier "Box" type_parameter: type_parameter - name: identifier "T" - bound: - named_type_expr - name: identifier "Equatable" + name_node: identifier "T" + bound: identifier "Equatable" type_parameter - name: identifier "U" + name_node: identifier "U" type: generic_type_expr - base: - named_type_expr - name: identifier "Dictionary" + base: identifier "Dictionary" type_argument: - named_type_expr - name: identifier "T" - named_type_expr - name: identifier "U" + identifier "T" + identifier "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..5cb220bbb681 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 @@ -44,15 +44,13 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" + pattern: identifier "y" value: call_expr callee: member_access_expr base: inferred_type_expr "." - member: identifier "some" + member_name_node: identifier "some" argument: argument value: int_literal "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..1c2eab54b2ef 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 @@ -34,10 +34,8 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" + pattern: identifier "x" value: member_access_expr base: inferred_type_expr "." - member: identifier "foo" + member_name_node: identifier "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..52a36238c2d5 100644 --- a/unified/extractor/tests/corpus/swift/functions/method-call.output +++ b/unified/extractor/tests/corpus/swift/functions/method-call.output @@ -35,10 +35,8 @@ top_level call_expr callee: member_access_expr - base: - name_expr - identifier: identifier "list" - member: identifier "append" + base: identifier "list" + member_name_node: identifier "append" argument: argument value: int_literal "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..b14135c1065c 100644 --- a/unified/extractor/tests/corpus/swift/functions/nested-function-type.output +++ b/unified/extractor/tests/corpus/swift/functions/nested-function-type.output @@ -105,52 +105,36 @@ top_level block stmt: type_alias_declaration - name: identifier "NestedFunction" + name_node: identifier "NestedFunction" type: - function_type_expr + function_expr parameter: parameter type: - function_type_expr + function_expr 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: identifier "Int" + return_type: identifier "Bool" + return_type: identifier "Bool" type_alias_declaration - name: identifier "MixedParametersAndTuples" + name_node: identifier "MixedParametersAndTuples" type: - function_type_expr + function_expr parameter: parameter type: - function_type_expr + function_expr parameter: parameter - type: - named_type_expr - name: identifier "Int" - return_type: - named_type_expr - name: identifier "Bool" + type: identifier "Int" + return_type: identifier "Bool" parameter - type: - named_type_expr - name: identifier "String" + type: identifier "String" return_type: - tuple_type_expr + tuple_expr element: - tuple_type_element - type: - named_type_expr - name: identifier "Bool" - tuple_type_element - type: - named_type_expr - name: identifier "Int" + argument + value: identifier "Bool" + argument + value: identifier "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..79384b19b20f 100644 --- a/unified/extractor/tests/corpus/swift/functions/variadic-function.output +++ b/unified/extractor/tests/corpus/swift/functions/variadic-function.output @@ -78,19 +78,13 @@ top_level block stmt: function_declaration - name: identifier "sum" + name_node: identifier "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" + external_name_node: identifier "_" + type: identifier "Int" + pattern: identifier "values" + return_type: identifier "Int" body: block stmt: @@ -99,14 +93,10 @@ top_level call_expr callee: member_access_expr - base: - name_expr - identifier: identifier "values" - member: identifier "reduce" + base: identifier "values" + member_name_node: identifier "reduce" argument: argument value: int_literal "0" argument - value: - name_expr - identifier: identifier "+" + value: identifier "+" 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..291ab41d8fe4 100644 --- a/unified/extractor/tests/corpus/swift/literals/line-magic-literal.output +++ b/unified/extractor/tests/corpus/swift/literals/line-magic-literal.output @@ -34,7 +34,5 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "currentLine" + pattern: identifier "currentLine" value: unsupported_node "#line" 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..4d8a2706c66e 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 body: block - stmt: string_literal "\"hello \\(name)\"" + stmt: + string_interpolation_expr + element: + string_literal "hello " + call_expr + callee: builtin_expr "interpolation" + argument: + argument + value: identifier "name" + string_literal + string_interpolation_expr + element: + string_literal "hello " + call_expr + callee: builtin_expr "interpolation" + argument: + argument + value: identifier "first" + string_literal " " + call_expr + callee: builtin_expr "interpolation" + argument: + argument + value: identifier "last" + string_literal + string_interpolation_expr + element: + string_literal "result: " + call_expr + callee: builtin_expr "interpolation" + argument: + argument + value: + binary_expr + left: identifier "x" + operator: infix_operator "+" + right: identifier "y" + string_literal + string_interpolation_expr + element: + string_literal "prefix " + call_expr + callee: builtin_expr "interpolation" + argument: + argument + value: identifier "value" + string_literal " suffix" + string_interpolation_expr + element: + string_literal "foo " + call_expr + callee: builtin_expr "interpolation" + argument: + argument + value: identifier "x" + argument + value: identifier "y" + string_literal + string_interpolation_expr + element: + string_literal "foo " + call_expr + callee: builtin_expr "interpolation" + argument: + argument + value: identifier "x" + argument + value: identifier "y" + argument + value: identifier "z" + string_literal + string_interpolation_expr + element: + string_literal "foo " + call_expr + callee: builtin_expr "interpolation" + argument: + argument + name_node: identifier "arg" + value: identifier "x" + string_literal + string_interpolation_expr + element: + string_literal "foo " + call_expr + callee: builtin_expr "interpolation" + argument: + argument + name_node: identifier "arg" + value: identifier "x" + argument + name_node: identifier "arg2" + value: identifier "y" + string_literal 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..4143f2a5b99b 100644 --- a/unified/extractor/tests/corpus/swift/loops/break-and-continue.output +++ b/unified/extractor/tests/corpus/swift/loops/break-and-continue.output @@ -103,21 +103,15 @@ top_level block stmt: for_each_stmt - pattern: - name_pattern - identifier: identifier "x" - iterable: - name_expr - identifier: identifier "xs" + pattern: identifier "x" + iterable: identifier "xs" body: block stmt: if_expr condition: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator "<" right: int_literal "0" then: @@ -126,20 +120,14 @@ top_level if_expr condition: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator ">" right: int_literal "100" then: block stmt: break_expr "break" call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "x" + value: identifier "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..3eb9c22f53a7 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 @@ -61,9 +61,7 @@ top_level block stmt: for_each_stmt - pattern: - name_pattern - identifier: identifier "x" + pattern: identifier "x" iterable: array_literal element: @@ -74,11 +72,7 @@ top_level block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "x" + value: identifier "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..2dd2f67df8b2 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 @@ -53,9 +53,7 @@ top_level block stmt: for_each_stmt - pattern: - name_pattern - identifier: identifier "i" + pattern: identifier "i" iterable: binary_expr left: int_literal "0" @@ -65,11 +63,7 @@ top_level block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "i" + value: identifier "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..febf7450e2d1 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 @@ -59,28 +59,18 @@ top_level block stmt: for_each_stmt - pattern: - name_pattern - identifier: identifier "x" - iterable: - name_expr - identifier: identifier "xs" + pattern: identifier "x" + iterable: identifier "xs" guard: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator ">" right: int_literal "0" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "x" + value: identifier "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..025cdb19f63f 100644 --- a/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.output +++ b/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.output @@ -52,15 +52,11 @@ top_level block stmt: compound_assign_expr - target: - name_expr - identifier: identifier "x" + target: identifier "x" operator: infix_operator "-=" value: int_literal "1" condition: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator ">" right: int_literal "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..54b3c20d61ab 100644 --- a/unified/extractor/tests/corpus/swift/loops/while-loop.output +++ b/unified/extractor/tests/corpus/swift/loops/while-loop.output @@ -51,17 +51,13 @@ top_level while_stmt condition: binary_expr - left: - name_expr - identifier: identifier "x" + left: identifier "x" operator: infix_operator ">" right: int_literal "0" body: block stmt: compound_assign_expr - target: - name_expr - identifier: identifier "x" + target: identifier "x" operator: infix_operator "-=" value: int_literal "1" diff --git a/unified/extractor/tests/corpus/swift/operators/addition.output b/unified/extractor/tests/corpus/swift/operators/addition.output index 9ba0f4de4770..d7607c50c10c 100644 --- a/unified/extractor/tests/corpus/swift/operators/addition.output +++ b/unified/extractor/tests/corpus/swift/operators/addition.output @@ -25,10 +25,6 @@ top_level block stmt: binary_expr - left: - name_expr - identifier: identifier "a" + left: identifier "a" operator: infix_operator "+" - right: - name_expr - identifier: identifier "b" + right: identifier "b" diff --git a/unified/extractor/tests/corpus/swift/operators/comparison.output b/unified/extractor/tests/corpus/swift/operators/comparison.output index 49bb8c996f2c..98d11f401bc8 100644 --- a/unified/extractor/tests/corpus/swift/operators/comparison.output +++ b/unified/extractor/tests/corpus/swift/operators/comparison.output @@ -25,10 +25,6 @@ top_level block stmt: binary_expr - left: - name_expr - identifier: identifier "a" + left: identifier "a" operator: infix_operator "<" - right: - name_expr - identifier: identifier "b" + right: identifier "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..df8ad5e47745 100644 --- a/unified/extractor/tests/corpus/swift/operators/custom-postfix-operator.output +++ b/unified/extractor/tests/corpus/swift/operators/custom-postfix-operator.output @@ -42,7 +42,5 @@ top_level unsupported_node "postfix operator ^^" variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "squared" + pattern: identifier "squared" value: unsupported_node "3^^" diff --git a/unified/extractor/tests/corpus/swift/operators/division.output b/unified/extractor/tests/corpus/swift/operators/division.output index f15dce8e8ea5..306a3639b3e1 100644 --- a/unified/extractor/tests/corpus/swift/operators/division.output +++ b/unified/extractor/tests/corpus/swift/operators/division.output @@ -25,10 +25,6 @@ top_level block stmt: binary_expr - left: - name_expr - identifier: identifier "a" + left: identifier "a" operator: infix_operator "/" - right: - name_expr - identifier: identifier "b" + right: identifier "b" diff --git a/unified/extractor/tests/corpus/swift/operators/equality.output b/unified/extractor/tests/corpus/swift/operators/equality.output index 7cf139ffa18d..7280d13ff1aa 100644 --- a/unified/extractor/tests/corpus/swift/operators/equality.output +++ b/unified/extractor/tests/corpus/swift/operators/equality.output @@ -25,10 +25,6 @@ top_level block stmt: binary_expr - left: - name_expr - identifier: identifier "a" + left: identifier "a" operator: infix_operator "==" - right: - name_expr - identifier: identifier "b" + right: identifier "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..102b83ec6ed4 100644 --- a/unified/extractor/tests/corpus/swift/operators/logical-and.output +++ b/unified/extractor/tests/corpus/swift/operators/logical-and.output @@ -25,10 +25,6 @@ top_level block stmt: binary_expr - left: - name_expr - identifier: identifier "a" + left: identifier "a" operator: infix_operator "&&" - right: - name_expr - identifier: identifier "b" + right: identifier "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..03476b41def3 100644 --- a/unified/extractor/tests/corpus/swift/operators/logical-not.output +++ b/unified/extractor/tests/corpus/swift/operators/logical-not.output @@ -20,7 +20,5 @@ top_level block stmt: unary_expr - operand: - name_expr - identifier: identifier "a" + operand: identifier "a" operator: prefix_operator "!" diff --git a/unified/extractor/tests/corpus/swift/operators/logical-or.output b/unified/extractor/tests/corpus/swift/operators/logical-or.output index b75d018dea71..8a447d8bb9fd 100644 --- a/unified/extractor/tests/corpus/swift/operators/logical-or.output +++ b/unified/extractor/tests/corpus/swift/operators/logical-or.output @@ -25,10 +25,6 @@ top_level block stmt: binary_expr - left: - name_expr - identifier: identifier "a" + left: identifier "a" operator: infix_operator "||" - right: - name_expr - identifier: identifier "b" + right: identifier "b" diff --git a/unified/extractor/tests/corpus/swift/operators/multiplication.output b/unified/extractor/tests/corpus/swift/operators/multiplication.output index 387c16439c48..0313287d9431 100644 --- a/unified/extractor/tests/corpus/swift/operators/multiplication.output +++ b/unified/extractor/tests/corpus/swift/operators/multiplication.output @@ -25,10 +25,6 @@ top_level block stmt: binary_expr - left: - name_expr - identifier: identifier "a" + left: identifier "a" operator: infix_operator "*" - right: - name_expr - identifier: identifier "b" + right: identifier "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..abbc1c6d5782 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 @@ -33,16 +33,10 @@ top_level block stmt: binary_expr - left: - name_expr - identifier: identifier "a" + left: identifier "a" operator: infix_operator "+" right: binary_expr - left: - name_expr - identifier: identifier "b" + left: identifier "b" operator: infix_operator "*" - right: - name_expr - identifier: identifier "c" + right: identifier "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..33bb1599ff1a 100644 --- a/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.output +++ b/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.output @@ -39,8 +39,10 @@ top_level block stmt: binary_expr - left: tuple_expr "(a + b)" + left: + binary_expr + left: identifier "a" + operator: infix_operator "+" + right: identifier "b" operator: infix_operator "*" - right: - name_expr - identifier: identifier "c" + right: identifier "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..6b0a834494ec 100644 --- a/unified/extractor/tests/corpus/swift/operators/partial-range-from.output +++ b/unified/extractor/tests/corpus/swift/operators/partial-range-from.output @@ -34,7 +34,5 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "range" + pattern: identifier "range" value: unsupported_node "3..." diff --git a/unified/extractor/tests/corpus/swift/operators/subtraction.output b/unified/extractor/tests/corpus/swift/operators/subtraction.output index 5c6fd51a2d38..63b4662fb575 100644 --- a/unified/extractor/tests/corpus/swift/operators/subtraction.output +++ b/unified/extractor/tests/corpus/swift/operators/subtraction.output @@ -25,10 +25,6 @@ top_level block stmt: binary_expr - left: - name_expr - identifier: identifier "a" + left: identifier "a" operator: infix_operator "-" - right: - name_expr - identifier: identifier "b" + right: identifier "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..d78fb757a8d9 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 @@ -94,48 +94,34 @@ top_level block stmt: function_declaration - name: identifier "casts" + name_node: identifier "casts" parameter: parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Any" - pattern: - name_pattern - identifier: identifier "a" + external_name_node: identifier "_" + type: identifier "Any" + pattern: identifier "a" parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "b" + external_name_node: identifier "_" + type: identifier "Int" + pattern: identifier "b" body: block stmt: unresolved_operator_sequence element: - name_expr - identifier: identifier "_" + identifier "_" infix_operator "=" - name_expr - identifier: identifier "a" + identifier "a" infix_operator "as" unsupported_node "Int" infix_operator ".&" - name_expr - identifier: identifier "b" + identifier "b" unresolved_operator_sequence element: - name_expr - identifier: identifier "_" + identifier "_" infix_operator "=" - name_expr - identifier: identifier "a" + identifier "a" infix_operator "is" unsupported_node "Int" infix_operator ".&" - name_expr - identifier: identifier "b" + identifier "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..80e0f7285631 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 @@ -100,43 +100,25 @@ top_level block stmt: function_declaration - name: identifier "choose" + name_node: identifier "choose" parameter: parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Bool" - pattern: - name_pattern - identifier: identifier "c" + external_name_node: identifier "_" + type: identifier "Bool" + pattern: identifier "c" parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "a" + external_name_node: identifier "_" + type: identifier "Int" + pattern: identifier "a" parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "b" + external_name_node: identifier "_" + type: identifier "Int" + pattern: 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" + external_name_node: identifier "_" + type: identifier "Int" + pattern: identifier "d" + return_type: identifier "Int" body: block stmt: @@ -144,14 +126,10 @@ top_level value: unresolved_operator_sequence element: - name_expr - identifier: identifier "c" + identifier "c" infix_operator "?" - name_expr - identifier: identifier "a" + identifier "a" infix_operator ":" - name_expr - identifier: identifier "b" + identifier "b" infix_operator ".&" - name_expr - identifier: identifier "d" + identifier "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..ae2da42f2d43 100644 --- a/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence.output +++ b/unified/extractor/tests/corpus/swift/operators/unresolved-operator-sequence.output @@ -67,34 +67,23 @@ top_level block stmt: function_declaration - name: identifier "combine" + name_node: identifier "combine" parameter: parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "a" + external_name_node: identifier "_" + type: identifier "Int" + pattern: identifier "a" parameter - external_name: identifier "_" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "b" + external_name_node: identifier "_" + type: identifier "Int" + pattern: identifier "b" body: block stmt: unresolved_operator_sequence element: - name_expr - identifier: identifier "_" + identifier "_" infix_operator "=" - name_expr - identifier: identifier "a" + identifier "a" infix_operator ".&" - name_expr - identifier: identifier "b" + identifier "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..3a603e8f504c 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 @@ -147,9 +147,7 @@ top_level unary_expr operand: call_expr - callee: - name_expr - identifier: identifier "foo" + callee: identifier "foo" operator: prefix_operator "try" catch_clause: catch_clause @@ -159,38 +157,30 @@ top_level conditional_pattern condition: call_expr - callee: - name_expr - identifier: identifier "isNetworkError" + callee: identifier "isNetworkError" argument: argument - value: - name_expr - identifier: identifier "e" + value: identifier "e" pattern: - name_pattern - identifier: identifier "e" + expr_pattern + modifier: modifier "let" + expr: identifier "e" conditional_pattern condition: call_expr - callee: - name_expr - identifier: identifier "isTimeout" + callee: identifier "isTimeout" argument: argument - value: - name_expr - identifier: identifier "f" + value: identifier "f" pattern: - name_pattern - identifier: identifier "f" + expr_pattern + modifier: modifier "let" + expr: identifier "f" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"retry\"" @@ -199,9 +189,7 @@ top_level block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument value: string_literal "\"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..8db6319fd778 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 @@ -68,9 +68,7 @@ top_level unary_expr operand: call_expr - callee: - name_expr - identifier: identifier "foo" + callee: identifier "foo" operator: prefix_operator "try" catch_clause: catch_clause @@ -78,11 +76,7 @@ top_level block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "error" + value: identifier "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..c977adaaa3f3 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 @@ -34,12 +34,8 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" + pattern: identifier "n" value: unary_expr - operand: - name_expr - identifier: identifier "opt" + operand: identifier "opt" operator: postfix_operator "!" 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..c8b6a85d6203 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 @@ -39,13 +39,9 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" + pattern: identifier "n" value: binary_expr - left: - name_expr - identifier: identifier "opt" + left: identifier "opt" operator: infix_operator "??" right: int_literal "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..42b65ed696b0 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 @@ -49,15 +49,11 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" + pattern: identifier "n" value: member_access_expr base: member_access_expr - base: - name_expr - identifier: identifier "obj" - member: identifier "foo" - member: identifier "bar" + base: identifier "obj" + member_name_node: identifier "foo" + member_name_node: identifier "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..05223133226b 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 @@ -80,38 +80,31 @@ top_level condition: pattern_guard_expr pattern: - constructor_pattern - constructor: + call_expr + callee: member_access_expr - base: - named_type_expr - name: identifier "Optional" - member: identifier "some" - element: - pattern_element - pattern: - constructor_pattern - constructor: + base: identifier "Optional" + member_name_node: identifier "some" + argument: + argument + value: + call_expr + callee: 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" + member_name_node: identifier "some" + argument: + argument + value: + expr_pattern + modifier: modifier "let" + expr: identifier "value" + value: identifier "input" then: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "value" + value: identifier "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..dd73c9899745 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 @@ -40,15 +40,9 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" + pattern: identifier "x" type: generic_type_expr - base: - named_type_expr - name: identifier "Optional" - type_argument: - named_type_expr - name: identifier "Int" + base: identifier "Optional" + type_argument: identifier "Int" value: builtin_expr "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..7915e7ee92f8 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 @@ -56,10 +56,8 @@ top_level block stmt: function_declaration - name: identifier "read" - return_type: - named_type_expr - name: identifier "String" + name_node: identifier "read" + return_type: identifier "String" body: block stmt: 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..faacc2583539 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 @@ -41,14 +41,10 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "result" + pattern: identifier "result" value: unary_expr operand: call_expr - callee: - name_expr - identifier: identifier "foo" + callee: identifier "foo" operator: prefix_operator "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..a5e07f561208 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 @@ -41,14 +41,10 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "result" + pattern: identifier "result" value: unary_expr operand: call_expr - callee: - name_expr - identifier: identifier "foo" + callee: identifier "foo" operator: prefix_operator "try?" 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..0c839689dce0 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 @@ -98,25 +98,17 @@ top_level stmt: accessor_declaration modifier: modifier "var" - name: identifier "p" + name_node: identifier "p" accessor_kind: accessor_kind "get" - type: - named_type_expr - name: identifier "Int" + type: identifier "Int" body: block stmt: switch_expr - value: - name_expr - identifier: identifier "y" + value: identifier "y" case: switch_case - pattern: - expr_equality_pattern - expr: - name_expr - identifier: identifier "someConstant" + pattern: identifier "someConstant" body: block stmt: 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..ed00913dafde --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/class-function.output @@ -0,0 +1,57 @@ +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 + body: + block + stmt: + class_like_declaration + modifier: modifier "class" + name_node: identifier "Factory" + member: + function_declaration + modifier: modifier "class" + name_node: identifier "make" + body: block "class func make() {}" 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..28af5a0f7086 100644 --- a/unified/extractor/tests/corpus/swift/types/class-inheritance.output +++ b/unified/extractor/tests/corpus/swift/types/class-inheritance.output @@ -34,9 +34,7 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "Dog" + name_node: identifier "Dog" base_type: base_type - type: - named_type_expr - name: identifier "Animal" + type: identifier "Animal" 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..8027fd0fca8c 100644 --- a/unified/extractor/tests/corpus/swift/types/class-with-initializer.output +++ b/unified/extractor/tests/corpus/swift/types/class-with-initializer.output @@ -92,35 +92,23 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "Point" + name_node: identifier "Point" member: variable_declaration modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" + pattern: identifier "x" + type: identifier "Int" constructor_declaration parameter: parameter - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "x" + type: identifier "Int" + pattern: identifier "x" body: block stmt: assign_expr target: member_access_expr - base: - name_expr - identifier: identifier "self" - member: identifier "x" - value: - name_expr - identifier: identifier "x" + base: identifier "self" + member_name_node: identifier "x" + value: identifier "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..f0b8cbf68dfb 100644 --- a/unified/extractor/tests/corpus/swift/types/class-with-method.output +++ b/unified/extractor/tests/corpus/swift/types/class-with-method.output @@ -79,22 +79,18 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "Counter" + name_node: identifier "Counter" member: variable_declaration modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "n" + pattern: identifier "n" value: int_literal "0" function_declaration - name: identifier "bump" + name_node: identifier "bump" body: block stmt: compound_assign_expr - target: - name_expr - identifier: identifier "n" + target: identifier "n" operator: infix_operator "+=" value: int_literal "1" 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..f6c87accee27 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 @@ -39,13 +39,9 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "Button" + name_node: identifier "Button" base_type: base_type - type: - named_type_expr - name: identifier "Control" + type: identifier "Control" base_type - type: - named_type_expr - name: identifier "Drawable" + type: identifier "Drawable" 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..a2eea59d3e87 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 @@ -63,21 +63,13 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "Point" + name_node: identifier "Point" member: variable_declaration modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" + pattern: identifier "x" + type: identifier "Int" variable_declaration modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "y" - type: - named_type_expr - name: identifier "Int" + pattern: identifier "y" + type: identifier "Int" diff --git a/unified/extractor/tests/corpus/swift/types/computed-property.output b/unified/extractor/tests/corpus/swift/types/computed-property.output index 24e816be0091..ab7c072ae40d 100644 --- a/unified/extractor/tests/corpus/swift/types/computed-property.output +++ b/unified/extractor/tests/corpus/swift/types/computed-property.output @@ -103,41 +103,27 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "Rect" + name_node: identifier "Rect" member: variable_declaration modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "w" - type: - named_type_expr - name: identifier "Double" + pattern: identifier "w" + type: identifier "Double" variable_declaration modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "h" - type: - named_type_expr - name: identifier "Double" + pattern: identifier "h" + type: identifier "Double" accessor_declaration modifier: modifier "var" - name: identifier "area" + name_node: identifier "area" accessor_kind: accessor_kind "get" - type: - named_type_expr - name: identifier "Double" + type: identifier "Double" body: block stmt: return_expr value: binary_expr - left: - name_expr - identifier: identifier "w" + left: identifier "w" operator: infix_operator "*" - right: - name_expr - identifier: identifier "h" + right: identifier "h" 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..b184e9b33ea1 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 @@ -83,5 +83,5 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "C" + name_node: identifier "C" member: unsupported_node "#if DEBUG\n init(x: Int) {}\n deinit {}\n#endif" 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..d594e9c48df4 100644 --- a/unified/extractor/tests/corpus/swift/types/constructor-with-parameters.output +++ b/unified/extractor/tests/corpus/swift/types/constructor-with-parameters.output @@ -65,24 +65,16 @@ top_level stmt: class_like_declaration modifier: modifier "struct" - name: identifier "Size" + name_node: identifier "Size" member: constructor_declaration parameter: parameter - external_name: identifier "width" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "w" + external_name_node: identifier "width" + type: identifier "Int" + pattern: identifier "w" parameter - external_name: identifier "height" - type: - named_type_expr - name: identifier "Int" - pattern: - name_pattern - identifier: identifier "h" + external_name_node: identifier "height" + type: identifier "Int" + pattern: identifier "h" body: block "init(width w: Int, height h: Int) {}" diff --git a/unified/extractor/tests/corpus/swift/types/empty-class.output b/unified/extractor/tests/corpus/swift/types/empty-class.output index 6693744c9b43..27bb4b5e67cd 100644 --- a/unified/extractor/tests/corpus/swift/types/empty-class.output +++ b/unified/extractor/tests/corpus/swift/types/empty-class.output @@ -26,4 +26,4 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "Foo" + name_node: identifier "Foo" 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..6e4bf71fe920 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 @@ -71,33 +71,25 @@ top_level stmt: class_like_declaration modifier: modifier "enum" - name: identifier "Shape" + name_node: identifier "Shape" member: class_like_declaration modifier: modifier "enum_case" - name: identifier "circle" + name_node: identifier "circle" member: constructor_declaration parameter: parameter - type: - named_type_expr - name: identifier "Double" - pattern: - name_pattern - identifier: identifier "radius" + type: identifier "Double" + pattern: identifier "radius" body: block "circle(radius: Double)" class_like_declaration modifier: modifier "enum_case" - name: identifier "square" + name_node: identifier "square" member: constructor_declaration parameter: parameter - type: - named_type_expr - name: identifier "Double" - pattern: - name_pattern - identifier: identifier "side" + type: identifier "Double" + pattern: identifier "side" body: block "square(side: Double)" 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..7c9184a774b3 100644 --- a/unified/extractor/tests/corpus/swift/types/enum-with-cases.output +++ b/unified/extractor/tests/corpus/swift/types/enum-with-cases.output @@ -67,25 +67,17 @@ top_level stmt: class_like_declaration modifier: modifier "enum" - name: identifier "Direction" + name_node: identifier "Direction" member: variable_declaration modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "north" + pattern: identifier "north" variable_declaration modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "south" + pattern: identifier "south" variable_declaration modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "east" + pattern: identifier "east" variable_declaration modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "west" + pattern: identifier "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..87b81b333d2f 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 @@ -46,31 +46,23 @@ top_level stmt: class_like_declaration modifier: modifier "enum" - name: identifier "Suit" + name_node: identifier "Suit" member: variable_declaration modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "clubs" + pattern: identifier "clubs" variable_declaration modifier: modifier "chained_declaration" modifier "enum_case" - pattern: - name_pattern - identifier: identifier "diamonds" + pattern: identifier "diamonds" variable_declaration modifier: modifier "chained_declaration" modifier "enum_case" - pattern: - name_pattern - identifier: identifier "hearts" + pattern: identifier "hearts" variable_declaration modifier: modifier "chained_declaration" modifier "enum_case" - pattern: - name_pattern - identifier: identifier "spades" + pattern: identifier "spades" diff --git a/unified/extractor/tests/corpus/swift/types/extension.output b/unified/extractor/tests/corpus/swift/types/extension.output index 1b1d02ebddad..76dedcdcd909 100644 --- a/unified/extractor/tests/corpus/swift/types/extension.output +++ b/unified/extractor/tests/corpus/swift/types/extension.output @@ -70,23 +70,17 @@ top_level stmt: class_like_declaration modifier: modifier "extension" - name: identifier "Int" + extension_target: identifier "Int" member: function_declaration - name: identifier "squared" - return_type: - named_type_expr - name: identifier "Int" + name_node: identifier "squared" + return_type: identifier "Int" body: block stmt: return_expr value: binary_expr - left: - name_expr - identifier: identifier "self" + left: identifier "self" operator: infix_operator "*" - right: - name_expr - identifier: identifier "self" + right: identifier "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..1522ef79c8a4 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 @@ -64,9 +64,7 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "callback" + pattern: identifier "callback" type: unsupported_node "@convention(c) () -> Void" value: function_expr 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..8478fad42c7e 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 @@ -57,9 +57,7 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "handler" + pattern: identifier "handler" type: unsupported_node "@Sendable () -> Void" value: function_expr 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..92b1713cebad 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 @@ -68,27 +68,17 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "Box" + name_node: identifier "Box" type_parameter: type_parameter - name: identifier "T" - bound: - named_type_expr - name: identifier "Equatable" + name_node: identifier "T" + bound: identifier "Equatable" type_parameter - name: identifier "U" + name_node: identifier "U" type_constraint: bound_type_constraint - type: - named_type_expr - name: identifier "U" - bound: - named_type_expr - name: identifier "Equatable" + type: identifier "U" + bound: identifier "Equatable" equality_type_constraint - left: - named_type_expr - name: identifier "U" - right: - named_type_expr - name: identifier "T" + left: identifier "U" + right: identifier "T" 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..17cdddf083fb 100644 --- a/unified/extractor/tests/corpus/swift/types/generic-type-arguments.output +++ b/unified/extractor/tests/corpus/swift/types/generic-type-arguments.output @@ -62,22 +62,13 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "cache" + pattern: identifier "cache" type: generic_type_expr - base: - named_type_expr - name: identifier "Dictionary" + base: identifier "Dictionary" type_argument: - named_type_expr - name: identifier "String" + identifier "String" generic_type_expr - base: - named_type_expr - name: identifier "Array" - type_argument: - named_type_expr - name: identifier "Int" + base: identifier "Array" + type_argument: identifier "Int" value: map_literal "[:]" 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..0be81cb39306 100644 --- a/unified/extractor/tests/corpus/swift/types/inline-array-type.output +++ b/unified/extractor/tests/corpus/swift/types/inline-array-type.output @@ -65,9 +65,7 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "triple" + pattern: identifier "triple" type: unsupported_node "[3 of Int]" value: array_literal diff --git a/unified/extractor/tests/corpus/swift/types/noncopyable-type.output b/unified/extractor/tests/corpus/swift/types/noncopyable-type.output index 4fb13ca13ece..970d21683f6e 100644 --- a/unified/extractor/tests/corpus/swift/types/noncopyable-type.output +++ b/unified/extractor/tests/corpus/swift/types/noncopyable-type.output @@ -56,16 +56,12 @@ top_level stmt: class_like_declaration modifier: modifier "struct" - name: identifier "FileHandle" + name_node: identifier "FileHandle" base_type: base_type type: unsupported_node "~Copyable" member: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "descriptor" - type: - named_type_expr - name: identifier "Int" + pattern: identifier "descriptor" + type: identifier "Int" 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..0641e6e30931 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 @@ -108,46 +108,34 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "Box" + name_node: identifier "Box" member: variable_declaration modifier: modifier "var" modifier "private" - pattern: - name_pattern - identifier: identifier "_v" + pattern: identifier "_v" value: int_literal "0" accessor_declaration modifier: modifier "var" - name: identifier "v" + name_node: identifier "v" accessor_kind: accessor_kind "get" - type: - named_type_expr - name: identifier "Int" + type: identifier "Int" body: block stmt: return_expr - value: - name_expr - identifier: identifier "_v" + value: identifier "_v" accessor_declaration modifier: modifier "var" modifier "chained_declaration" - name: identifier "v" + name_node: identifier "v" accessor_kind: accessor_kind "set" - type: - named_type_expr - name: identifier "Int" + type: identifier "Int" body: block stmt: assign_expr - target: - name_expr - identifier: identifier "_v" - value: - name_expr - identifier: identifier "newValue" + target: identifier "_v" + value: identifier "newValue" diff --git a/unified/extractor/tests/corpus/swift/types/protocol-declaration.output b/unified/extractor/tests/corpus/swift/types/protocol-declaration.output index e848fb23eb3f..dacfae76cb34 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,6 +32,22 @@ 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 @@ -42,8 +59,12 @@ top_level stmt: class_like_declaration modifier: modifier "protocol" - name: identifier "Drawable" + name_node: identifier "Drawable" member: function_declaration - name: identifier "draw" + name_node: identifier "draw" body: block "func draw()" + function_declaration + modifier: modifier "static" + name_node: identifier "make" + body: block "static func make()" 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..37e084520a18 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,6 +72,31 @@ 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 @@ -82,24 +108,22 @@ top_level stmt: class_like_declaration modifier: modifier "protocol" - name: identifier "P" + name_node: identifier "P" member: accessor_declaration - name: identifier "foo" + name_node: identifier "foo" accessor_kind: accessor_kind "get" - type: - named_type_expr - name: identifier "Int" + type: identifier "Int" accessor_declaration - name: identifier "bar" + name_node: identifier "bar" accessor_kind: accessor_kind "get" - type: - named_type_expr - name: identifier "String" + type: identifier "String" accessor_declaration modifier: modifier "chained_declaration" - name: identifier "bar" + name_node: identifier "bar" accessor_kind: accessor_kind "set" - type: - named_type_expr - name: identifier "String" + type: identifier "String" + accessor_declaration + name_node: identifier "count" + accessor_kind: accessor_kind "get" + type: identifier "Int" 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..4512e9e6c54d 100644 --- a/unified/extractor/tests/corpus/swift/types/qualified-type.output +++ b/unified/extractor/tests/corpus/swift/types/qualified-type.output @@ -103,37 +103,29 @@ top_level stmt: class_like_declaration modifier: modifier "struct" - name: identifier "Outer" + name_node: identifier "Outer" member: class_like_declaration modifier: modifier "struct" - name: identifier "Inner" + name_node: identifier "Inner" member: class_like_declaration modifier: modifier "struct" - name: identifier "Deep" + name_node: identifier "Deep" variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "value" + pattern: identifier "value" type: - named_type_expr - qualifier: - named_type_expr - name: identifier "Outer" - name: identifier "Inner" + member_access_expr + base: identifier "Outer" + member_name_node: identifier "Inner" variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "nested" + pattern: identifier "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 + base: + member_access_expr + base: identifier "Outer" + member_name_node: identifier "Inner" + member_name_node: identifier "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..f610765a02eb --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/static-function.output @@ -0,0 +1,57 @@ +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 + body: + block + stmt: + class_like_declaration + modifier: modifier "class" + name_node: identifier "Factory" + member: + function_declaration + modifier: modifier "static" + name_node: identifier "make" + body: block "static func make() {}" 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..133a2935acd7 100644 --- a/unified/extractor/tests/corpus/swift/types/struct.output +++ b/unified/extractor/tests/corpus/swift/types/struct.output @@ -63,21 +63,13 @@ top_level stmt: class_like_declaration modifier: modifier "struct" - name: identifier "Point" + name_node: identifier "Point" member: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" + pattern: identifier "x" + type: identifier "Int" variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" - type: - named_type_expr - name: identifier "Int" + pattern: identifier "y" + type: identifier "Int" diff --git a/unified/extractor/tests/corpus/swift/variables/assignment.output b/unified/extractor/tests/corpus/swift/variables/assignment.output index a011eb76cafc..a81c74dd6c29 100644 --- a/unified/extractor/tests/corpus/swift/variables/assignment.output +++ b/unified/extractor/tests/corpus/swift/variables/assignment.output @@ -25,7 +25,5 @@ top_level block stmt: assign_expr - target: - name_expr - identifier: identifier "x" + target: identifier "x" value: int_literal "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..6776009f62bb 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 @@ -67,21 +67,13 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" + pattern: identifier "x" value: switch_expr - value: - name_expr - identifier: identifier "y" + value: identifier "y" case: switch_case - pattern: - expr_equality_pattern - expr: - name_expr - identifier: identifier "someConstant" + pattern: identifier "someConstant" body: block stmt: int_literal "1" diff --git a/unified/extractor/tests/corpus/swift/variables/compound-assignment.output b/unified/extractor/tests/corpus/swift/variables/compound-assignment.output index 485b5044ad69..0189512f9abd 100644 --- a/unified/extractor/tests/corpus/swift/variables/compound-assignment.output +++ b/unified/extractor/tests/corpus/swift/variables/compound-assignment.output @@ -25,8 +25,6 @@ top_level block stmt: compound_assign_expr - target: - name_expr - identifier: identifier "x" + target: identifier "x" operator: infix_operator "+=" value: int_literal "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..d4cefc129d47 100644 --- a/unified/extractor/tests/corpus/swift/variables/let-binding.output +++ b/unified/extractor/tests/corpus/swift/variables/let-binding.output @@ -31,7 +31,5 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" + pattern: identifier "x" value: int_literal "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..8a28988e8b9d 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 @@ -37,10 +37,6 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" + pattern: identifier "x" + type: identifier "Int" value: int_literal "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..2ab4bc96691f 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 @@ -42,15 +42,11 @@ top_level stmt: variable_declaration modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" + pattern: identifier "x" value: int_literal "1" variable_declaration modifier: modifier "let" modifier "chained_declaration" - pattern: - name_pattern - identifier: identifier "y" + pattern: identifier "y" value: int_literal "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..c574ee74d788 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 @@ -103,50 +103,38 @@ top_level stmt: class_like_declaration modifier: modifier "class" - name: identifier "C" + name_node: identifier "C" member: variable_declaration modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" + pattern: identifier "x" + type: identifier "Int" value: int_literal "0" accessor_declaration modifier: modifier "var" modifier "chained_declaration" - name: identifier "x" + name_node: identifier "x" accessor_kind: accessor_kind "willSet" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "newValue" + value: identifier "newValue" accessor_declaration modifier: modifier "var" modifier "chained_declaration" - name: identifier "x" + name_node: identifier "x" accessor_kind: accessor_kind "didSet" body: block stmt: call_expr - callee: - name_expr - identifier: identifier "print" + callee: identifier "print" argument: argument - value: - name_expr - identifier: identifier "oldValue" + value: identifier "oldValue" 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..1036f85b4e94 100644 --- a/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.output +++ b/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.output @@ -43,16 +43,10 @@ top_level variable_declaration modifier: modifier "let" pattern: - tuple_pattern + tuple_expr element: - pattern_element - pattern: - name_pattern - identifier: identifier "a" - pattern_element - pattern: - name_pattern - identifier: identifier "b" - value: - name_expr - identifier: identifier "pair" + argument + value: identifier "a" + argument + value: identifier "b" + value: identifier "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..a2c717034c0d 100644 --- a/unified/extractor/tests/corpus/swift/variables/var-binding.output +++ b/unified/extractor/tests/corpus/swift/variables/var-binding.output @@ -31,7 +31,5 @@ top_level stmt: variable_declaration modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" + pattern: identifier "x" value: int_literal "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..7996077c0d36 100644 --- a/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.output +++ b/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.output @@ -31,9 +31,5 @@ top_level stmt: variable_declaration modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" + pattern: identifier "x" + type: identifier "Int" diff --git a/unified/extractor/tests/corpus_tests.rs b/unified/extractor/tests/corpus_tests.rs index f0a3c448f12b..47675fc2287f 100644 --- a/unified/extractor/tests/corpus_tests.rs +++ b/unified/extractor/tests/corpus_tests.rs @@ -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) 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/ql/consistency-queries/DataFlowConsistency.ql b/unified/ql/consistency-queries/DataFlowConsistency.ql new file mode 100644 index 000000000000..267abd674cb5 --- /dev/null +++ b/unified/ql/consistency-queries/DataFlowConsistency.ql @@ -0,0 +1,10 @@ +private import unified +private import codeql.unified.internal.dataflow.AllDataFlow +private import codeql.dataflow.internal.DataFlowImplConsistency + +module ConsistencyInput implements InputSig { } + +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..209adfca340a --- /dev/null +++ b/unified/ql/consistency-queries/LocalSsaConsistency.ql @@ -0,0 +1,3 @@ +private import unified +private import codeql.unified.internal.dataflow.LocalSsa +import LocalSsaOutput::Consistency diff --git a/unified/ql/lib/codeql/Definitions.qll b/unified/ql/lib/codeql/Definitions.qll index 3eb6ddcef102..1f6a1bbc9e81 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) { +predicate definitionOf(Identifier reference, NameBinding definition, string kind) { definition = getStaticBindingTarget(reference) and - not reference instanceof NameDeclaration and + not reference instanceof NameBinding and kind = "name" } diff --git a/unified/ql/lib/codeql/unified/internal/AnalysisQuality.qll b/unified/ql/lib/codeql/unified/internal/AnalysisQuality.qll index 6f899bba4283..d5eb5071176e 100644 --- a/unified/ql/lib/codeql/unified/internal/AnalysisQuality.qll +++ b/unified/ql/lib/codeql/unified/internal/AnalysisQuality.qll @@ -1,10 +1,8 @@ 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 -/** 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 @@ -44,15 +42,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() = getStaticBindingTarget(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) ) } diff --git a/unified/ql/lib/codeql/unified/internal/Ast.qll b/unified/ql/lib/codeql/unified/internal/Ast.qll index cf927e257a9c..a04b93291707 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,8 +112,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_accessor_declaration_def(this, _, result) } + /** Gets the node corresponding to the field `name_node`. */ + final F::Identifier getNameNode() { unified_accessor_declaration_def(this, _, result) } /** Gets the node corresponding to the field `parameter`. */ final F::Parameter getParameter(int i) { @@ -124,7 +124,7 @@ module Unified { final 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) } } @@ -206,7 +206,7 @@ module Unified { 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 +216,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_associated_type_declaration_def(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final 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 +239,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 +296,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 +313,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 +329,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 +359,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 +375,10 @@ module Unified { } } - class Callable extends @unified_callable, F::AstNode { } + class Callable extends @unified_callable, F::AstNode { + /** Gets the node corresponding to the field `body`. */ + abstract F::Block getBody(); + } /** A class representing `catch_clause` nodes. */ class CatchClause extends @unified_catch_clause, F::AstNode { @@ -390,7 +395,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 +418,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 +437,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_class_like_declaration_name(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final 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,9 +459,10 @@ 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) } @@ -480,7 +491,7 @@ module Unified { } /** 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 +505,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 +523,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,8 +533,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_constructor_declaration_name(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final F::Identifier getNameNode() { unified_constructor_declaration_name_node(this, result) } /** Gets the node corresponding to the field `parameter`. */ final F::Parameter getParameter(int i) { @@ -537,51 +548,23 @@ module Unified { 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 { - /** 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) } - - /** 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_constructor_pattern_def(this, result) or - unified_constructor_pattern_element(this, _, result) or - unified_constructor_pattern_modifier(this, _, result) - } - } - /** 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 = "ContinueExpr" } - /** 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 `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_continue_expr_label(this, result) } + final override F::AstNode getAFieldOrChild() { + unified_continue_expr_label_name_node(this, result) + } } /** A class representing `destructor_declaration` nodes. */ @@ -592,7 +575,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 +629,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 +641,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 +698,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 +716,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,8 +724,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_function_declaration_def(this, result) } + /** Gets the node corresponding to the field `name_node`. */ + final F::Identifier getNameNode() { unified_function_declaration_def(this, result) } /** Gets the node corresponding to the field `parameter`. */ final F::Parameter getParameter(int i) { @@ -747,7 +736,7 @@ module Unified { final 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 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 +772,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) { @@ -806,11 +795,11 @@ module Unified { final 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 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 +807,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 +848,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" } } @@ -907,12 +875,6 @@ module Unified { } } - /** A class representing `ignore_pattern` tokens. */ - class IgnorePattern extends @unified_token_ignore_pattern, F::Pattern, F::Token { - /** Gets the name of the primary QL class for this element. */ - final override string getAPrimaryQlClass() { result = "IgnorePattern" } - } - /** A class representing `import_declaration` nodes. */ class ImportDeclaration extends @unified_import_declaration, F::Stmt { /** Gets the name of the primary QL class for this element. */ @@ -928,7 +890,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 +901,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 +920,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 +965,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) } @@ -1038,10 +1000,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 +1018,28 @@ module Unified { final override string getAPrimaryQlClass() { result = "Modifier" } } - /** A class representing `name_expr` nodes. */ - class NameExpr extends @unified_name_expr, F::Expr { + /** 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 = "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 { - /** 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) - } - } + /** Gets the node corresponding to the field `name_node`. */ + final F::Identifier getNameNode() { unified_named_pattern_def(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 `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 +1061,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 +1077,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 +1088,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 +1107,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 +1117,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 +1182,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 +1235,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 +1291,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 +1331,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 +1353,11 @@ 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 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 +1397,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 +1409,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 +1423,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 +1440,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, _) } + 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_expr_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_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, _) } - - /** Gets the node corresponding to the field `type`. */ - final F::TypeExpr getType() { unified_type_test_pattern_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) } } @@ -1639,9 +1493,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 +1510,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 +1562,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,7 +1570,7 @@ 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 @@ -1732,7 +1584,7 @@ module Unified { 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 +1602,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,11 +1620,15 @@ 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 @@ -1794,17 +1650,11 @@ 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" - 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.(ContinueExpr).getLabelNameNode() and i = -1 and name = "getLabelNameNode" or result = node.(DestructorDeclaration).getBody() and i = -1 and name = "getBody" or @@ -1820,7 +1670,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 +1688,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 +1708,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,7 +1736,7 @@ 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 @@ -1896,25 +1744,19 @@ module Unified { or result = node.(MemberAccessExpr).getBase() and i = -1 and name = "getBase" or - result = node.(MemberAccessExpr).getMember() and i = -1 and name = "getMember" - or - result = node.(NameExpr).getIdentifier() and i = -1 and name = "getIdentifier" - or - result = node.(NamePattern).getIdentifier() and i = -1 and name = "getIdentifier" + result = node.(MemberAccessExpr).getMemberNameNode() and i = -1 and name = "getMemberNameNode" or - result = node.(NamePattern).getModifier(i) and name = "getModifier" + result = node.(NamedPattern).getModifier(i) and name = "getModifier" or - result = node.(NamePattern).getSubPattern() and i = -1 and name = "getSubPattern" + result = node.(NamedPattern).getNameNode() and i = -1 and name = "getNameNode" or - result = node.(NamedTypeExpr).getName() and i = -1 and name = "getName" - 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 +1768,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 +1776,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 +1810,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 +1830,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 +1838,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" @@ -2087,8 +1913,6 @@ module UnifiedFinal { final class ConstructorDeclaration = F::ConstructorDeclaration; - final class ConstructorPattern = F::ConstructorPattern; - final class ContinueExpr = F::ContinueExpr; final class DestructorDeclaration = F::DestructorDeclaration; @@ -2101,11 +1925,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 +1939,6 @@ module UnifiedFinal { final class FunctionExpr = F::FunctionExpr; - final class FunctionTypeExpr = F::FunctionTypeExpr; - final class GenericTypeExpr = F::GenericTypeExpr; final class GuardIfStmt = F::GuardIfStmt; @@ -2127,8 +1947,6 @@ module UnifiedFinal { final class IfExpr = F::IfExpr; - final class IgnorePattern = F::IgnorePattern; - final class ImportDeclaration = F::ImportDeclaration; final class InferredTypeExpr = F::InferredTypeExpr; @@ -2151,11 +1969,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 +1979,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 +1991,8 @@ module UnifiedFinal { final class Stmt = F::Stmt; + final class StringInterpolationExpr = F::StringInterpolationExpr; + final class StringLiteral = F::StringLiteral; final class SuperExpr = F::SuperExpr; @@ -2197,26 +2009,16 @@ 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 UnresolvedOperatorSequence = F::UnresolvedOperatorSequence; diff --git a/unified/ql/lib/codeql/unified/internal/AstExtra.qll b/unified/ql/lib/codeql/unified/internal/AstExtra.qll index f5a9ad09caaa..64ab0262ea56 100644 --- a/unified/ql/lib/codeql/unified/internal/AstExtra.qll +++ b/unified/ql/lib/codeql/unified/internal/AstExtra.qll @@ -3,6 +3,7 @@ */ private import unified +private import codeql.unified.internal.NameBindingPlugin module Public { /** A short-circuiting logical AND expression. */ @@ -29,24 +30,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 +59,21 @@ 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 } + } } diff --git a/unified/ql/lib/codeql/unified/internal/ControlFlowGraph.qll b/unified/ql/lib/codeql/unified/internal/ControlFlowGraph.qll index 15db0eb3836e..019722484d1a 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; @@ -25,7 +26,11 @@ private module Ast implements AstSig { 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 + } AstNode getChild(AstNode n, int index) { result.getParent() = n and @@ -35,26 +40,11 @@ private module Ast implements AstSig { not skipControlFlow(result) } - Callable getEnclosingCallable(AstNode node) { - exists(AstNode parent | parent = node.getParent() | - result = parent - or - not parent instanceof Callable and - result = getEnclosingCallable(parent) - ) - } + Callable getEnclosingCallable(AstNode node) { result = node.getEnclosingCallable() } class Callable = U::Callable; - 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() - } + AstNode callableGetBody(Callable c) { result = c.getBody() } class Parameter extends U::Parameter { Expr getDefaultValue() { result = super.getDefault() } @@ -128,7 +118,6 @@ private module Ast implements AstSig { // TODO support foreach guard // - // TODO: Expr != Pattern Expr getVariable() { result = super.getPattern() } Expr getCollection() { result = super.getIterable() } @@ -233,6 +222,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,9 +231,9 @@ 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 } @@ -250,7 +241,7 @@ private module Input implements InputSig1, InputSig2 { private Label getLabelOfStmt(Stmt s) { exists(LabeledStmt l | s = l.getStmt() | - result = l.getLabel().getValue() or + result = l.getLabelName() or result = getLabelOfStmt(l) ) } @@ -258,9 +249,9 @@ private module Input implements InputSig1, InputSig2 { predicate hasLabel(Ast::AstNode n, Label l) { l = getLabelOfStmt(n) 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 +259,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..2e64053642eb --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/ExprPositions.qll @@ -0,0 +1,70 @@ +private import unified +private import NameBinding as NameBinding + +/** + * Holds if `expr` appears in the context of a type annotation. + */ +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.getParent() instanceof TypeConstraint + 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/FacadeAst.qll b/unified/ql/lib/codeql/unified/internal/FacadeAst.qll index 3da8de4b8f03..54efc88a473d 100644 --- a/unified/ql/lib/codeql/unified/internal/FacadeAst.qll +++ b/unified/ql/lib/codeql/unified/internal/FacadeAst.qll @@ -23,12 +23,47 @@ module Unified { ) } - /** Gets the nearest enclosing class declaration, possibly this node itself. */ + /** Gets the nearest enclosing class declaration, if any. */ ClassLikeDeclaration getEnclosingClass() { - result = this - or - not this instanceof ClassLikeDeclaration and - result = this.getParent().getEnclosingClass() + 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() + ) + } + + /** + * 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,10 +88,99 @@ 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() } + } + + 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 ClassLikeDeclaration extends G::ClassLikeDeclaration { + /** Gets the name of this declaration. */ + string getName() { result = this.getNameNode().getValue() } + } + + class ConstructorDeclaration extends G::ConstructorDeclaration { + /** Gets the name of this constructor. */ + string getName() { result = this.getNameNode().getValue() } + } + + 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() } + } + + class LabeledStmt extends G::LabeledStmt { + /** Gets the label name of this statement. */ + string getLabelName() { result = this.getLabelNameNode().getValue() } + } + + class MemberAccessExpr extends G::MemberAccessExpr { + /** 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. */ + string getExternalName() { result = this.getExternalNameNode().getValue() } + } + + 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 { /** Gets an operand of this binary expression. */ @@ -69,19 +193,12 @@ module Unified { 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()) } } } diff --git a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll index 5a44080464cc..0844fe64bed9 100644 --- a/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll +++ b/unified/ql/lib/codeql/unified/internal/LocalNameBinding.qll @@ -5,6 +5,8 @@ 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 { class AstNode = U::AstNode; @@ -101,7 +103,7 @@ private module LocalNameBindingInput implements LocalNameBindingInputSig; +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) { +NameBindingNode trackNameBinding(NameBinding decl) { exists(NameBindingNode start | start.isIdentifier(decl) and - result = TrackNameDeclaration::track(start) + result = TrackNameBinding::track(start) ) } @@ -463,6 +513,9 @@ module DebugGraph { or inheritanceStep(node1, node2) and value = "inheritedBy" + or + extensionStep(node1, node2) and + value = "extensionOf" ) } } @@ -473,7 +526,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 +612,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 +630,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 +651,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 @@ -611,41 +676,72 @@ private int unqualifiedMemberAccessDepth(PotentialLocalNameAccess access) { * `instanceAccess` indicates if it is an instance member or static member. */ predicate unqualifiedMemberAccess( - PotentialLocalNameAccess access, boolean instanceAccess, NameDeclaration target, + PotentialLocalNameAccess access, boolean instanceAccess, NameBinding target, ClassLikeDeclaration accessingClass ) { 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 declaration of the member being accessed. */ - NameDeclaration getTarget() { result = target } + /** Gets the name binding of the member being accessed. */ + NameBinding 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. */ + 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) { +NameBinding getStaticBindingTarget(Identifier access) { // For unqualified accesses, use the shadowing-aware lookup result = access.(UnqualifiedMemberAccess).getTarget() or // For others, just follow the name binding graph not access instanceof UnqualifiedMemberAccess and - trackNameDeclaration(result).asIdentifier() = access + trackNameBinding(result).asIdentifier() = 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; 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..893e62d3b140 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/AllDataFlow.qll @@ -0,0 +1,11 @@ +/** Re-exports all the files in the internal dataflow folder (except DataFlowPublic). */ + +import Content +import DataFlowGraph +import DataFlowInstantiation +import DataFlowNode +import DataFlowPlugin +import Step +import LocalSsa +import TaintTrackingInstantiation +import VariableRefKind 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..73a3d7da2c9d --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/Content.qll @@ -0,0 +1,37 @@ +private import unified +private import AllDataFlow + +private newtype TContent = + 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() + } + +class Content extends TContent { + string asNamedMember() { this = TNamedMember(result) } + + string toString() { result = this.asNamedMember() } + + Location getLocation() { none() } +} + +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 } +} 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..1edff6eea04b --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowGraph.qll @@ -0,0 +1,118 @@ +private import unified +private import AllDataFlow + +predicate step(Node node1, Step step, Node node2) { + any(DataFlowPlugin p).step(node1, step, node2) + 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 + 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 + 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 adjacent(Node n) { + step(n, _, result) + or + step(result, _, n) + or + localSsaStep(n, result, _) + or + localSsaStep(result, n, _) + } + + private predicate relevantDataFlowNode(Node node) { + relevantNode(node.getWrappedAstNode()) + or + not exists(node.getWrappedAstNode()) and + relevantDataFlowNode(adjacent(node)) + } + + query predicate nodes(Node node, string key, string value) { + relevantDataFlowNode(node) and + key = "semmle.label" and + value = node.toString() + } + + 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 + 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 = getPostUpdateNode(node1) and + value = "post-update" + ) + } +} 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..da5602cddd29 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowInstantiation.qll @@ -0,0 +1,199 @@ +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 ParameterNode extends Node { + ParameterNode() { none() } // TODO + } + + class ArgumentNode extends Node { + ArgumentNode() { none() } // TODO + } + + class ReturnNode extends Node { + ReturnNode() { none() } // TODO + + ReturnKind getKind() { none() } // TODO + } + + class OutNode extends Node { + OutNode() { none() } // TODO + } + + class ReturnKind = Unit; + + class ParameterPosition extends Void { + ParameterPosition() { none() } // TODO + + bindingset[this] + string toString() { none() } // TODO + } + + class ArgumentPosition extends Void { + ArgumentPosition() { none() } // TODO + + bindingset[this] + string toString() { none() } // TODO + } + + predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { none() } // TODO + + // + // Calls and callables + // + class DataFlowCall extends Void { + Location getLocation() { none() } // TODO + + DataFlowCallable getEnclosingCallable() { none() } // TODO + } + + class DataFlowCallable = Callable; // TODO: Use newtype + + DataFlowCallable viableCallable(DataFlowCall c) { none() } // TODO + + DataFlowCallable nodeGetEnclosingCallable(Node node) { result = node.getEnclosingCallable() } + + predicate isParameterNode(ParameterNode p, DataFlowCallable c, ParameterPosition pos) { + none() // TODO + } + + predicate isArgumentNode(ArgumentNode n, DataFlowCall call, ArgumentPosition pos) { + none() // TODO + } + + OutNode getAnOutNode(DataFlowCall call, ReturnKind kind) { none() } // TODO + + // + // Post-update nodes + // + class PostUpdateNode extends Node { + PostUpdateNode() { this = getPostUpdateNode(_) } + + Node getPreUpdateNode() { this = getPostUpdateNode(result) } + } + + // + // 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 + // + predicate simpleLocalFlowStep(Node node1, Node node2, string model) { + step(node1, any(Step s | s.value()), node2) and model = "" + or + localSsaStep(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) + } + + predicate storeStep(Node node1, ContentSet c, Node node2) { + step(node1, any(Step s | s.store(c)), node2) + } + + predicate clearsContent(Node n, ContentSet c) { none() } // 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) { + node instanceof TValueNode + 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) { none() } // TODO + + class LambdaCallKind extends Void { + LambdaCallKind() { none() } // TODO + + string toString() { none() } // TODO + } + + predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) { none() } // TODO + + predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { none() } // TODO + + 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..bc4bec52b948 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowNode.qll @@ -0,0 +1,155 @@ +private import unified +private import AllDataFlow +private import codeql.unified.internal.ExprPositions + +private predicate hasPostUpdate(Expr expr) { + exists(MemberAccessExpr member | + (hasIncomingValue(member, _) or hasPostUpdate(member)) and + expr = member.getBase() + ) +} + +/** + * Holds if `expr` performs an access to `var` of the given `kind` at `cfgNode`. + */ +predicate performsVariableAccess( + Expr expr, LocalVariable var, VariableRefKind kind, ControlFlowNode cfgNode +) { + exists(LocalVariableAccess access | var = access.getLocalVariable() and expr = access | + hasResultValue(access) and kind.isRead() and cfgNode.isAfter(expr) + or + hasIncomingValue(access, _) and kind.isWrite() and cfgNode.asExpr() = expr // TODO: use more precise CFG node + or + hasPostUpdate(access) and kind.isPostUpdate() and cfgNode.asExpr() = expr // TODO: use more precise CFG node + ) + or + exists(UnqualifiedMemberAccess access | + access.isInstanceAccess() and var = access.getImplicitQualifierVariable() and expr = access + | + kind.isRead() and cfgNode.isBefore(access) + or + (hasIncomingValue(access, _) or hasPostUpdate(access)) and + kind.isPostUpdate() and + cfgNode.asExpr() = access // TODO: use more precise CFG node + ) +} + +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(Expr expr, LocalVariable var, VariableRefKind kind) { + performsVariableAccess(expr, var, kind, _) + } or + TLocalSsaNode(LocalSsaDataFlowOutput::SsaNode node) + +/** + * A node representing something that can have a value. + */ +class Node extends TDataFlowNode { + /** 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 `access`. */ + predicate isLocalVariableRef(Expr access, LocalVariable v, VariableRefKind kind) { + this = TLocalVariableRefNode(access, v, kind) + } + + /** Holds if this represents the value read from `v` at `access`. */ + predicate isLocalVariableRead(Expr access, LocalVariable v) { + this.isLocalVariableRef(access, v, TRead()) + } + + /** Holds if this represents the value written to `v` at `access`. */ + predicate isLocalVariableWrite(Expr access, LocalVariable v) { + this.isLocalVariableRef(access, 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(Expr access, LocalVariable v) { + this.isLocalVariableRef(access, 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) } + + /** Gets the expression represented by this node. */ + Expr asExpr() { this = TValueNode(result) } + + /** + * Gets the AST node wrapped by this data flow, if any. + */ + AstNode getWrappedAstNode() { + result = this.asExpr() or + this = TStrictlyIncomingValue(result) or + this = TExprPostUpdateNode(result) or + this = TLocalVariableRefNode(result, _, _) + } + + /** Get a string representation of this element. */ + string toString() { + result = this.asExpr().toString() + or + exists(Expr expr | + 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(LocalSsaDataFlowOutput::SsaNode node | + this = TLocalSsaNode(node) and + result = node.toString() + ) + } + + /** Gets the location of this data flow node. */ + Location getLocation() { + result = this.getWrappedAstNode().getLocation() + or + exists(LocalSsaDataFlowOutput::SsaNode node | + this = TLocalSsaNode(node) and + result = node.getLocation() + ) + } + + /** Gets the callable containing this data flow node. */ + Callable getEnclosingCallable() { + result = this.getWrappedAstNode().getEnclosingCallable() + or + exists(LocalSsaDataFlowOutput::SsaNode node | + this = TLocalSsaNode(node) and + result = node.getSourceVariable().getDeclaringCallable() + ) + } +} + +Node getPostUpdateNode(Node pre) { + exists(Expr expr | + pre.isResultValue(expr) and + result.isPostUpdate(expr) + ) + or + exists(Expr expr, LocalVariable var | + pre.isLocalVariableRead(expr, var) and + result.isLocalVariablePostUpdate(expr, var) + ) +} 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..01b480e5af74 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowPlugin.qll @@ -0,0 +1,16 @@ +/** + * 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(Node node1, Step step, Node node2) { none() } +} 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..6cf9b5d487b8 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/DataFlowPluginSwift.qll @@ -0,0 +1,29 @@ +/** + * Provides Swift-specific data flow rules. + */ + +private import unified +private import AllDataFlow + +private class SwiftDataFlowPlugin extends DataFlowPlugin { + // Note: For now we assume all code is Swift, but in the future we must restrict these rules to Swift-files + override predicate step(Node node1, Step step, Node 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) + ) + } +} 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..6b4fe6c376c1 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/LocalSsa.qll @@ -0,0 +1,95 @@ +/** + * 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)) + } +} + +module LocalSsaOutput = Make; + +private import LocalSsaOutput + +module LocalSsaDataFlowInput implements DataFlowIntegrationInputSig { + class Expr extends TLocalVariableRefNode { + predicate hasCfgNode(BasicBlock bb, int i) { + exists(U::Expr expr, LocalVariable var, VariableRefKind kind | + this = TLocalVariableRefNode(expr, var, kind) and + kind.isRead() and + performsVariableAccess(expr, var, kind, bb.getNode(i)) + ) + } + + string toString() { result = this.(Node).toString() } + } + + 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() } +} + +module LocalSsaDataFlowOutput = DataFlowIntegration; + +private module Ssa = LocalSsaDataFlowOutput; + +Node getNodeFromLocalSsaNode(Ssa::Node n) { + result = TLocalSsaNode(n) + or + result = n.(Ssa::ExprNode).getExpr() + or + result = getPostUpdateNode(n.(Ssa::ExprPostUpdateNode).getExpr()) + or + exists(LocalVariable v, BasicBlock bb, int i, Expr expr | + n.(Ssa::WriteDefSourceNode).getDefinition().definesAt(v, bb, i) and + performsVariableAccess(expr, v, TWrite(), bb.getNode(i)) and + result.isLocalVariableWrite(expr, v) + ) +} + +predicate localSsaStep(Node node1, Node node2, boolean isUseStep) { + exists(Ssa::Node ssa1, Ssa::Node ssa2 | + Ssa::localFlowStep(_, ssa1, ssa2, isUseStep) and + node1 = getNodeFromLocalSsaNode(ssa1) and + node2 = getNodeFromLocalSsaNode(ssa2) + ) +} + +predicate localSsaMustFlowStep(Node node1, Node 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/Step.qll b/unified/ql/lib/codeql/unified/internal/dataflow/Step.qll new file mode 100644 index 000000000000..65d2667a464e --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/dataflow/Step.qll @@ -0,0 +1,51 @@ +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 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)) } + + 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/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/qlpack.yml b/unified/ql/lib/qlpack.yml index 0167b114ba96..84261b14adc7 100644 --- a/unified/ql/lib/qlpack.yml +++ b/unified/ql/lib/qlpack.yml @@ -6,7 +6,10 @@ extractor: unified library: true upgrades: upgrades dependencies: + codeql/concepts: ${workspace} codeql/controlflow: ${workspace} + codeql/ssa: ${workspace} + codeql/dataflow: ${workspace} codeql/namebinding: ${workspace} codeql/util: ${workspace} warnOnImplicitThis: true diff --git a/unified/ql/lib/unified.dbscheme b/unified/ql/lib/unified.dbscheme index 56312bb69d2c..cb0facfc1d0a 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( @@ -202,7 +202,7 @@ unified_assign_expr_def( 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 +214,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 +226,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 +249,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 +289,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 +303,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 +318,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 +337,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] @@ -372,7 +377,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 +387,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,28 +404,9 @@ 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( @@ -458,20 +444,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_assign_expr | @unified_binary_expr | @unified_block | @unified_break_expr | @unified_bulk_importing_pattern | @unified_call_expr | @unified_compound_assign_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_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_inferred_type_expr | @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_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 +484,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 +508,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 +527,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 +558,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 +607,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,7 +635,7 @@ 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 ); @@ -671,40 +654,21 @@ unified_map_literal_def( 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 -); - -unified_name_expr_def( - unique int id: @unified_name_expr, - int identifier: @unified_token_identifier ref + int base: @unified_expr ref, + int member_name_node: @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 +692,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 +706,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 +718,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 +732,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 ); @@ -816,6 +761,24 @@ unified_return_expr_def( @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 +#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( int unified_switch_case: @unified_switch_case ref, @@ -825,7 +788,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 +852,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 +882,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 +909,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 +949,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 +959,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( @@ -1073,17 +993,16 @@ case @unified_token.kind of | 5 = @unified_token_fixity | 6 = @unified_token_float_literal | 7 = @unified_token_identifier -| 8 = @unified_token_ignore_pattern -| 9 = @unified_token_inferred_type_expr -| 10 = @unified_token_infix_operator -| 11 = @unified_token_int_literal -| 12 = @unified_token_modifier -| 13 = @unified_token_postfix_operator -| 14 = @unified_token_prefix_operator -| 15 = @unified_token_regex_literal -| 16 = @unified_token_string_literal -| 17 = @unified_token_super_expr -| 18 = @unified_token_unsupported_node +| 8 = @unified_token_inferred_type_expr +| 9 = @unified_token_infix_operator +| 10 = @unified_token_int_literal +| 11 = @unified_token_modifier +| 12 = @unified_token_postfix_operator +| 13 = @unified_token_prefix_operator +| 14 = @unified_token_regex_literal +| 15 = @unified_token_string_literal +| 16 = @unified_token_super_expr +| 17 = @unified_token_unsupported_node ; @@ -1093,7 +1012,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_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_continue_expr | @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_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..9729b6445812 100644 --- a/unified/ql/lib/unified.qll +++ b/unified/ql/lib/unified.qll @@ -7,4 +7,5 @@ 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.NameBinding::Public +import codeql.unified.internal.dataflow.DataFlowPublic 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/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..4a232e984e78 100644 --- a/unified/ql/lib/utils/test/TestUtils.qll +++ b/unified/ql/lib/utils/test/TestUtils.qll @@ -1,15 +1,15 @@ private import unified private import CommentUtil -private import codeql.unified.internal.StaticNameBinding +private import codeql.unified.internal.NameBinding 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 = deriveClassName(cls.getEnclosingClass()) + "." + cls.getName() } -private string defaultName(NameDeclaration decl) { +private string defaultName(NameBinding decl) { exists(ClassLikeDeclaration cls | decl.getDeclaration() = cls.getAMember() and result = deriveClassName(cls) + "." + decl.getName() @@ -19,11 +19,12 @@ private string defaultName(NameDeclaration decl) { 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 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/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/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/test/library-tests/BasicTest/CONSISTENCY/CfgConsistency.expected b/unified/ql/test/library-tests/BasicTest/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..eaa376774829 --- /dev/null +++ b/unified/ql/test/library-tests/BasicTest/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,5 @@ +consistencyOverview +| deadEnd | 2 | +deadEnd +| test.swift:59:10:59:25 | Entry | +| test.swift:60:10:60:25 | Entry | 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..5f8e2a323ad2 100644 --- a/unified/ql/test/library-tests/BasicTest/test.expected +++ b/unified/ql/test/library-tests/BasicTest/test.expected @@ -1,39 +1,184 @@ -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:18 | 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:39 | Element | Element | +| test.swift:20:33:20:40 | Optional | Optional | +| 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:65 | 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:25 | 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:33 | T | T | +| test.swift:47:33:47:34 | Optional | Optional | +| 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:29 | Array | Array | +| test.swift:85:28:85:28 | T | T | +| 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:59 | T | T | +| test.swift:85:59:85:60 | Optional | Optional | +| 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..fa3c26183b08 100644 --- a/unified/ql/test/library-tests/BasicTest/test.ql +++ b/unified/ql/test/library-tests/BasicTest/test.ql @@ -1,7 +1,13 @@ import unified -query predicate nameExpr(NameExpr node, string value) { value = node.getIdentifier().getValue() } +query predicate identifier(Identifier node, string value) { 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) { value = e.getValue() } + +query predicate exprStringValue(Expr e, string value) { 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/controlflow/basicblock-slices.expected b/unified/ql/test/library-tests/controlflow/basicblock-slices.expected new file mode 100644 index 000000000000..c9d14ccd1af7 --- /dev/null +++ b/unified/ql/test/library-tests/controlflow/basicblock-slices.expected @@ -0,0 +1,470 @@ +| 1 | cfg.swift:1:1:604:2 | Block | 'Block -V VariableDeclaration -V topLevelDecl -> Int -> 0' | +| 2 | cfg.swift:2:1:2:1 | 0 | '0' | +| 3 | cfg.swift:3:1:3:12 | topLevelDecl | 'topLevelDecl -> + -> 1 -^ BinaryExpr' | +| 5 | cfg.swift:5:1:5:37 | Block | 'Block -V 0 -^ ReturnExpr' | +| 5 | cfg.swift:5:1:5:37 | FunctionDeclaration | 'FunctionDeclaration' | +| 7 | cfg.swift:7:1:7:10 | returnZero | 'returnZero -^ CallExpr' | +| 8 | cfg.swift:8:1:8:6 | Double | 'Double -> Argument -V topLevelDecl -^ CallExpr' | +| 10 | cfg.swift:10:1:13:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V MyError -^ BaseType -V Error' | +| 11 | cfg.swift:11:10:11:16 | VariableDeclaration | 'VariableDeclaration -V error1 -> VariableDeclaration -V error2' | +| 12 | cfg.swift:12:10:12:31 | ClassLikeDeclaration | 'ClassLikeDeclaration -V error3 -^ ConstructorDeclaration' | +| 12 | cfg.swift:12:17:12:25 | withParam | 'withParam -^ Block' | +| 15 | cfg.swift:15:1:17:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 15 | cfg.swift:15:13:15:13 | x | 'x -^ Block' | +| 16 | cfg.swift:16:10:16:10 | x | 'x -> == -> 0 -^ BinaryExpr -^ ReturnExpr' | +| 19 | cfg.swift:19:1:26:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 19 | cfg.swift:19:17:19:17 | x | 'x -^ Block' | +| 20 | cfg.swift:20:3:22:3 | GuardIfStmt | 'GuardIfStmt -V x -> >= -> 0 -^ BinaryExpr -> Block' | +| 21 | cfg.swift:21:11:21:17 | MyError | 'MyError -^ MemberAccessExpr -^ ThrowExpr' | +| 28 | cfg.swift:28:1:45:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 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 -^ UnaryExpr' | +| 30 | cfg.swift:30:9:30:18 | mightThrow | 'mightThrow -> Argument -V 0 -^ CallExpr' | +| 31 | cfg.swift:31:5:31:9 | print | 'print -> Argument -V "Did not throw." -^ CallExpr' | +| 32 | cfg.swift:32:10:32:19 | mightThrow | 'mightThrow -> Argument -V 0 -^ CallExpr -^ try! -^ UnaryExpr' | +| 33 | cfg.swift:33:5:33:9 | print | 'print -> Argument -V "Still did not throw." -^ CallExpr' | +| 35 | cfg.swift:35:5:37:3 | CatchClause | 'CatchClause -V MyError -^ MemberAccessExpr -> isZero -> Argument -V x -^ CallExpr -? MyError -^ MemberAccessExpr -^ 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 -^ MemberAccessExpr -> Argument -V withParam -^ ExprPattern -^ CallExpr' | +| 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" -^ CallExpr' | +| 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 -V Argument -V error -^ CallExpr -> -^ StringInterpolationExpr -^ CallExpr' | +| 44 | cfg.swift:44:10:44:10 | 0 | '0 -^ ReturnExpr' | +| 47 | cfg.swift:47:1:51:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 47 | cfg.swift:47:21:47:21 | s | 's -^ Block' | +| 48 | cfg.swift:48:10:50:3 | Block | 'Block' | +| 48 | cfg.swift:48:10:50:3 | FunctionExpr | 'FunctionExpr -^ ReturnExpr' | +| 49 | cfg.swift:49:12:49:12 | s | 's -> + -> "" -^ BinaryExpr -^ ReturnExpr' | +| 53 | cfg.swift:53:1:58:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 53 | cfg.swift:53:21:53:21 | x | 'x -^ Block' | +| 54 | cfg.swift:54:3:56:3 | FunctionDeclaration | 'FunctionDeclaration' | +| 54 | cfg.swift:54:10:54:10 | y | 'y -^ Block' | +| 55 | cfg.swift:55:12:55:12 | x | 'x -> + -> y -^ BinaryExpr -^ ReturnExpr' | +| 57 | cfg.swift:57:10:57:10 | f | 'f -^ ReturnExpr' | +| 60 | cfg.swift:60:1:64:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 60 | cfg.swift:60:21:60:21 | x | 'x -^ Block' | +| 61 | cfg.swift:61:10:63:3 | Block | 'Block' | +| 61 | cfg.swift:61:10:63:3 | FunctionExpr | 'FunctionExpr -^ ReturnExpr' | +| 62 | cfg.swift:62:6:62:6 | y | 'y' | +| 62 | cfg.swift:62:19:62:19 | x | 'x -> + -> y -^ BinaryExpr' | +| 66 | cfg.swift:66:1:70:1 | Block | 'Block' | +| 66 | cfg.swift:66:1:70:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 67 | cfg.swift:67:3:67:34 | VariableDeclaration | 'VariableDeclaration -V x1 -> createClosure1 -> Argument -V "" -^ CallExpr -^ CallExpr' | +| 68 | cfg.swift:68:3:68:35 | VariableDeclaration | 'VariableDeclaration -V x2 -> createClosure2 -> Argument -V 0 -^ CallExpr -> Argument -V 10 -^ CallExpr' | +| 69 | cfg.swift:69:3:69:35 | VariableDeclaration | 'VariableDeclaration -V x3 -> createClosure3 -> Argument -V 0 -^ CallExpr -> Argument -V 10 -^ CallExpr' | +| 72 | cfg.swift:72:1:75:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 72 | cfg.swift:72:20:72:20 | s | 's -^ Block' | +| 73 | cfg.swift:73:3:73:23 | VariableDeclaration | 'VariableDeclaration -V n -> Optional -V Int -^ GenericTypeExpr -> Int -> Argument -V s -^ CallExpr' | +| 74 | cfg.swift:74:10:74:10 | n | 'n -^ ReturnExpr' | +| 77 | cfg.swift:77:1:81:1 | Block | 'Block' | +| 77 | cfg.swift:77:1:81:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 78 | cfg.swift:78:3:78:36 | VariableDeclaration | 'VariableDeclaration -V nBang -> maybeParseInt -> Argument -V "42" -^ CallExpr -^ ! -^ UnaryExpr' | +| 79 | cfg.swift:79:3:79:31 | VariableDeclaration | 'VariableDeclaration -V n -> maybeParseInt -> Argument -V "42" -^ CallExpr' | +| 80 | cfg.swift:80:10:80:14 | nBang | 'nBang -> + -> n -^ ! -^ UnaryExpr -^ BinaryExpr -^ ReturnExpr' | +| 83 | cfg.swift:83:1:98:1 | Block | 'Block' | +| 83 | cfg.swift:83:1:98:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 84 | cfg.swift:84:3:84:15 | VariableDeclaration | 'VariableDeclaration -V temp -> 10' | +| 86 | cfg.swift:86:3:88:3 | FunctionDeclaration | 'FunctionDeclaration' | +| 86 | cfg.swift:86:12:86:12 | a | 'a -^ Block' | +| 87 | cfg.swift:87:5:87:5 | a | 'a -> a -> + -> 1 -^ BinaryExpr -^ AssignExpr' | +| 90 | cfg.swift:90:3:92:3 | FunctionDeclaration | 'FunctionDeclaration' | +| 90 | cfg.swift:90:20:90:20 | a | 'a -^ Block' | +| 91 | cfg.swift:91:5:91:5 | a | 'a -> nil -^ AssignExpr' | +| 94 | cfg.swift:94:3:94:5 | add | 'add -> Argument -V -^ CallExpr' | +| 95 | cfg.swift:95:3:95:30 | VariableDeclaration | 'VariableDeclaration -V tempOptional -> Optional -V Int -^ GenericTypeExpr -> 10' | +| 96 | cfg.swift:96:3:96:13 | addOptional | 'addOptional -> Argument -V -^ CallExpr' | +| 97 | cfg.swift:97:10:97:13 | temp | 'temp -> + -> tempOptional -^ ! -^ UnaryExpr -^ BinaryExpr -^ ReturnExpr' | +| 100 | cfg.swift:100:1:109:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V C' | +| 101 | cfg.swift:101:3:101:16 | VariableDeclaration | 'VariableDeclaration -V myInt -> Int' | +| 102 | cfg.swift:102:3:104:3 | ConstructorDeclaration | 'ConstructorDeclaration' | +| 102 | cfg.swift:102:8:102:8 | n | 'n -^ Block' | +| 103 | cfg.swift:103:5:103:9 | myInt | 'myInt -> n -^ AssignExpr' | +| 106 | cfg.swift:106:3:108:3 | Block | 'Block' | +| 106 | cfg.swift:106:3:108:3 | FunctionDeclaration | 'FunctionDeclaration' | +| 107 | cfg.swift:107:12:107:16 | myInt | 'myInt -^ ReturnExpr' | +| 111 | cfg.swift:111:1:137:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 111 | cfg.swift:111:20:111:24 | param | 'param -> inoutParam -> opt -^ Block' | +| 112 | cfg.swift:112:3:112:18 | VariableDeclaration | 'VariableDeclaration -V c -> C -> Argument -V 42 -^ CallExpr' | +| 113 | cfg.swift:113:3:113:18 | VariableDeclaration | 'VariableDeclaration -V n1 -> c -^ MemberAccessExpr' | +| 114 | cfg.swift:114:3:114:23 | VariableDeclaration | 'VariableDeclaration -V n2 -> c -^ MemberAccessExpr -^ MemberAccessExpr' | +| 115 | cfg.swift:115:3:115:23 | VariableDeclaration | 'VariableDeclaration -V n3 -> c -^ MemberAccessExpr -^ CallExpr' | +| 116 | cfg.swift:116:3:116:28 | VariableDeclaration | 'VariableDeclaration -V n4 -> c -^ MemberAccessExpr -^ MemberAccessExpr -^ CallExpr' | +| 117 | cfg.swift:117:3:117:22 | VariableDeclaration | 'VariableDeclaration -V n5 -> param -^ MemberAccessExpr' | +| 118 | cfg.swift:118:3:118:27 | VariableDeclaration | 'VariableDeclaration -V n6 -> param -^ MemberAccessExpr -^ MemberAccessExpr' | +| 120 | cfg.swift:120:3:120:32 | VariableDeclaration | 'VariableDeclaration -V n8 -> param -^ MemberAccessExpr -^ MemberAccessExpr -^ CallExpr' | +| 122 | cfg.swift:122:3:122:27 | VariableDeclaration | 'VariableDeclaration -V n9 -> inoutParam -^ MemberAccessExpr' | +| 123 | cfg.swift:123:3:123:27 | VariableDeclaration | 'VariableDeclaration -V n7 -> param -^ MemberAccessExpr -^ CallExpr' | +| 124 | cfg.swift:124:3:124:33 | VariableDeclaration | 'VariableDeclaration -V n10 -> inoutParam -^ MemberAccessExpr -^ MemberAccessExpr' | +| 125 | cfg.swift:125:3:125:33 | VariableDeclaration | 'VariableDeclaration -V n11 -> inoutParam -^ MemberAccessExpr -^ CallExpr' | +| 126 | cfg.swift:126:3:126:38 | VariableDeclaration | 'VariableDeclaration -V n12 -> inoutParam -^ MemberAccessExpr -^ MemberAccessExpr -^ CallExpr' | +| 128 | cfg.swift:128:3:128:22 | VariableDeclaration | 'VariableDeclaration -V n13 -> opt -^ ! -^ UnaryExpr -^ MemberAccessExpr' | +| 129 | cfg.swift:129:3:129:27 | VariableDeclaration | 'VariableDeclaration -V n14 -> opt -^ ! -^ UnaryExpr -^ MemberAccessExpr -^ MemberAccessExpr' | +| 130 | cfg.swift:130:3:130:27 | VariableDeclaration | 'VariableDeclaration -V n15 -> opt -^ ! -^ UnaryExpr -^ MemberAccessExpr -^ CallExpr' | +| 131 | cfg.swift:131:3:131:32 | VariableDeclaration | 'VariableDeclaration -V n16 -> opt -^ ! -^ UnaryExpr -^ MemberAccessExpr -^ MemberAccessExpr -^ CallExpr' | +| 133 | cfg.swift:133:3:133:22 | VariableDeclaration | 'VariableDeclaration -V n17 -> opt -^ MemberAccessExpr' | +| 134 | cfg.swift:134:3:134:27 | VariableDeclaration | 'VariableDeclaration -V n18 -> opt -^ MemberAccessExpr -^ MemberAccessExpr' | +| 135 | cfg.swift:135:3:135:27 | VariableDeclaration | 'VariableDeclaration -V n19 -> opt -^ MemberAccessExpr -^ CallExpr' | +| 136 | cfg.swift:136:3:136:32 | VariableDeclaration | 'VariableDeclaration -V n20 -> opt -^ MemberAccessExpr -^ MemberAccessExpr -^ CallExpr' | +| 139 | cfg.swift:139:1:166:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 139 | cfg.swift:139:15:139:15 | x | 'x -^ Block' | +| 140 | cfg.swift:140:3:141:12 | ForEachStmt | 'ForEachStmt -V 0 -> ... -> 10 -^ BinaryExpr' | +| 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 | Block | 'Block' | +| 144 | cfg.swift:144:5:146:17 | SwitchCase | 'SwitchCase -V 0 -> 1 -^ OrPattern' | +| 145 | cfg.swift:145:14:145:17 | true | 'true -^ ReturnExpr' | +| 147 | cfg.swift:147:5:150:17 | Block | 'Block' | +| 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 | BinaryExpr | 'BinaryExpr -V x -> >= -> 2 -^ BinaryExpr' | +| 149 | cfg.swift:149:13:149:13 | x | 'x -> < -> 5 -^ BinaryExpr' | +| 150 | cfg.swift:150:14:150:17 | true | 'true -^ ReturnExpr' | +| 151 | cfg.swift:151:5:152:18 | SwitchCase | 'SwitchCase -V Block' | +| 152 | cfg.swift:152:14:152:18 | false | 'false -^ ReturnExpr' | +| 168 | cfg.swift:168:1:184:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 168 | cfg.swift:168:16:168:16 | x | 'x -^ Block' | +| 170 | cfg.swift:170:3:172:3 | | '' | +| 174 | cfg.swift:174:3:176:3 | | '' | +| 178 | cfg.swift:178:3:183:3 | | '' | +| 186 | cfg.swift:186:1:198:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 186 | cfg.swift:186:9:186:9 | x | 'x -^ Block' | +| 187 | cfg.swift:187:3:197:3 | IfExpr | 'IfExpr -V x -> > -> 2 -^ BinaryExpr' | +| 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" -^ CallExpr' | +| 190 | cfg.swift:190:8:197:3 | IfExpr | 'IfExpr -V BinaryExpr -V BinaryExpr -V x -> <= -> 2 -^ BinaryExpr' | +| 191 | cfg.swift:191:13:191:13 | x | 'x -> > -> 0 -^ BinaryExpr' | +| 192 | cfg.swift:192:13:192:21 | UnaryExpr | 'UnaryExpr -V x -> == -> 5 -^ BinaryExpr' | +| 192 | cfg.swift:192:23:194:3 | Block | 'Block' | +| 193 | cfg.swift:193:5:193:9 | print | 'print -> Argument -V "x is 1" -^ CallExpr' | +| 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" -^ CallExpr' | +| 200 | cfg.swift:200:1:205:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 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 | FunctionDeclaration | 'FunctionDeclaration' | +| 207 | cfg.swift:207:9:207:9 | x | 'x -^ Block' | +| 208 | cfg.swift:208:3:213:3 | IfExpr | 'IfExpr -V x -> < -> 0 -^ BinaryExpr' | +| 208 | cfg.swift:208:12:213:3 | Block | 'Block' | +| 209 | cfg.swift:209:5:209:5 | x | 'x -> x -? - -^ UnaryExpr -^ AssignExpr' | +| 210 | cfg.swift:210:5:212:5 | IfExpr | 'IfExpr -V x -> > -> 10 -^ BinaryExpr' | +| 210 | cfg.swift:210:15:212:5 | Block | 'Block' | +| 211 | cfg.swift:211:7:211:7 | x | 'x -> x -> - -> 1 -^ BinaryExpr -^ AssignExpr' | +| 214 | cfg.swift:214:10:214:10 | x | 'x -^ ReturnExpr' | +| 217 | cfg.swift:217:1:223:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 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 | FunctionDeclaration | 'FunctionDeclaration' | +| 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 -^ CallExpr' | +| 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 | Block | 'Block' | +| 236 | cfg.swift:236:1:240:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 237 | cfg.swift:237:3:239:3 | IfExpr | 'IfExpr -V UnaryExpr -V true' | +| 242 | cfg.swift:242:1:248:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 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" -^ CallExpr' | +| 246 | cfg.swift:246:8:246:9 | Block | 'Block' | +| 247 | cfg.swift:247:3:247:7 | print | 'print -> Argument -V "done" -^ CallExpr' | +| 250 | cfg.swift:250:1:254:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 250 | cfg.swift:250:16:250:17 | b1 | 'b1 -> b2 -^ Block' | +| 251 | cfg.swift:251:3:253:3 | IfExpr | 'IfExpr -V BinaryExpr -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" -^ CallExpr' | +| 256 | cfg.swift:256:1:273:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 256 | cfg.swift:256:18:256:18 | a | 'a -> b -^ Block' | +| 257 | cfg.swift:257:3:257:15 | VariableDeclaration | 'VariableDeclaration -V c -> a -> + -> b -^ BinaryExpr' | +| 258 | cfg.swift:258:3:258:15 | VariableDeclaration | 'VariableDeclaration -V d -> a -> - -> b -^ BinaryExpr' | +| 259 | cfg.swift:259:3:259:15 | VariableDeclaration | 'VariableDeclaration -V e -> a -> * -> b -^ BinaryExpr' | +| 260 | cfg.swift:260:3:260:15 | VariableDeclaration | 'VariableDeclaration -V f -> a -> / -> b -^ BinaryExpr' | +| 261 | cfg.swift:261:3:261:15 | VariableDeclaration | 'VariableDeclaration -V g -> a -> % -> b -^ BinaryExpr' | +| 262 | cfg.swift:262:3:262:15 | VariableDeclaration | 'VariableDeclaration -V h -> a -> & -> b -^ BinaryExpr' | +| 263 | cfg.swift:263:3:263:15 | VariableDeclaration | 'VariableDeclaration -V i -> a -> \| -> b -^ BinaryExpr' | +| 264 | cfg.swift:264:3:264:15 | VariableDeclaration | 'VariableDeclaration -V j -> a -> ^ -> b -^ BinaryExpr' | +| 265 | cfg.swift:265:3:265:16 | VariableDeclaration | 'VariableDeclaration -V k -> a -> << -> b -^ BinaryExpr' | +| 266 | cfg.swift:266:3:266:16 | VariableDeclaration | 'VariableDeclaration -V l -> a -> >> -> b -^ BinaryExpr' | +| 267 | cfg.swift:267:3:267:16 | VariableDeclaration | 'VariableDeclaration -V o -> a -> == -> b -^ BinaryExpr' | +| 268 | cfg.swift:268:3:268:16 | VariableDeclaration | 'VariableDeclaration -V p -> a -> != -> b -^ BinaryExpr' | +| 269 | cfg.swift:269:3:269:15 | VariableDeclaration | 'VariableDeclaration -V q -> a -> < -> b -^ BinaryExpr' | +| 270 | cfg.swift:270:3:270:16 | VariableDeclaration | 'VariableDeclaration -V r -> a -> <= -> b -^ BinaryExpr' | +| 271 | cfg.swift:271:3:271:15 | VariableDeclaration | 'VariableDeclaration -V s -> a -> > -> b -^ BinaryExpr' | +| 272 | cfg.swift:272:3:272:16 | VariableDeclaration | 'VariableDeclaration -V t -> a -> >= -> b -^ BinaryExpr' | +| 275 | cfg.swift:275:1:277:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 275 | cfg.swift:275:25:275:25 | x | 'x -> y -^ Block' | +| 276 | cfg.swift:276:11:276:10 | | ' -> interpolation -V Argument -V x -^ CallExpr -> + -> interpolation -V Argument -V y -^ CallExpr -> is equal to -> interpolation -V Argument -V x -> + -> y -^ BinaryExpr -^ CallExpr -> and here is a zero: -> interpolation -V Argument -V returnZero -^ CallExpr -^ CallExpr -> -^ StringInterpolationExpr -^ ReturnExpr' | +| 279 | cfg.swift:279:1:310:1 | Block | 'Block' | +| 279 | cfg.swift:279:1:310:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 280 | cfg.swift:280:3:280:44 | VariableDeclaration | 'VariableDeclaration -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 -^ CallExpr -> 0 -^ AssignExpr' | +| 282 | cfg.swift:282:3:282:3 | a | 'a -> Argument -V 1 -^ CallExpr -> += -> 1 -^ CompoundAssignExpr' | +| 283 | cfg.swift:283:3:283:3 | a | 'a -> Argument -V 2 -^ CallExpr -> -= -> 1 -^ CompoundAssignExpr' | +| 284 | cfg.swift:284:3:284:3 | a | 'a -> Argument -V 3 -^ CallExpr -> *= -> 1 -^ CompoundAssignExpr' | +| 285 | cfg.swift:285:3:285:3 | a | 'a -> Argument -V 4 -^ CallExpr -> /= -> 1 -^ CompoundAssignExpr' | +| 286 | cfg.swift:286:3:286:3 | a | 'a -> Argument -V 5 -^ CallExpr -> %= -> 1 -^ CompoundAssignExpr' | +| 287 | cfg.swift:287:3:287:3 | a | 'a -> Argument -V 6 -^ CallExpr -> &= -> 1 -^ CompoundAssignExpr' | +| 288 | cfg.swift:288:3:288:3 | a | 'a -> Argument -V 7 -^ CallExpr -> \|= -> 1 -^ CompoundAssignExpr' | +| 289 | cfg.swift:289:3:289:3 | a | 'a -> Argument -V 8 -^ CallExpr -> ^= -> 1 -^ CompoundAssignExpr' | +| 290 | cfg.swift:290:3:290:3 | a | 'a -> Argument -V 9 -^ CallExpr -> <<= -> 1 -^ CompoundAssignExpr' | +| 291 | cfg.swift:291:3:291:3 | a | 'a -> Argument -V 10 -^ CallExpr -> >>= -> 1 -^ CompoundAssignExpr' | +| 293 | cfg.swift:293:3:293:49 | VariableDeclaration | 'VariableDeclaration -V tupleWithA -> Argument -V a -> Argument -V 0 -^ CallExpr -> Argument -V a -> Argument -V 1 -^ CallExpr -> Argument -V a -> Argument -V 2 -^ CallExpr -> Argument -V a -> Argument -V 3 -^ CallExpr -> Argument -V a -> Argument -V 4 -^ CallExpr -^ TupleExpr' | +| 295 | cfg.swift:295:3:295:48 | VariableDeclaration | 'VariableDeclaration -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 -^ CallExpr -> a -> Argument -V 10 -^ CallExpr -^ AssignExpr' | +| 297 | cfg.swift:297:3:297:3 | b | 'b -> Argument -V 1 -^ CallExpr -> b -> Argument -V 0 -^ CallExpr -> + -> 1 -^ BinaryExpr -^ AssignExpr' | +| 298 | cfg.swift:298:3:298:3 | b | 'b -> Argument -V 2 -^ CallExpr -> b -> Argument -V 1 -^ CallExpr -> - -> 1 -^ BinaryExpr -^ AssignExpr' | +| 299 | cfg.swift:299:3:299:3 | b | 'b -> Argument -V 3 -^ CallExpr -> b -> Argument -V 2 -^ CallExpr -> * -> 1 -^ BinaryExpr -^ AssignExpr' | +| 300 | cfg.swift:300:3:300:3 | b | 'b -> Argument -V 4 -^ CallExpr -> b -> Argument -V 3 -^ CallExpr -> / -> 1 -^ BinaryExpr -^ AssignExpr' | +| 301 | cfg.swift:301:3:301:3 | b | 'b -> Argument -V 5 -^ CallExpr -> b -> Argument -V 4 -^ CallExpr -> % -> 1 -^ BinaryExpr -^ AssignExpr' | +| 302 | cfg.swift:302:3:302:3 | b | 'b -> Argument -V 6 -^ CallExpr -> b -> Argument -V 5 -^ CallExpr -> & -> 1 -^ BinaryExpr -^ AssignExpr' | +| 303 | cfg.swift:303:3:303:3 | b | 'b -> Argument -V 7 -^ CallExpr -> b -> Argument -V 6 -^ CallExpr -> \| -> 1 -^ BinaryExpr -^ AssignExpr' | +| 304 | cfg.swift:304:3:304:3 | b | 'b -> Argument -V 8 -^ CallExpr -> b -> Argument -V 7 -^ CallExpr -> ^ -> 1 -^ BinaryExpr -^ AssignExpr' | +| 305 | cfg.swift:305:3:305:3 | b | 'b -> Argument -V 9 -^ CallExpr -> b -> Argument -V 8 -^ CallExpr -> << -> 1 -^ BinaryExpr -^ AssignExpr' | +| 306 | cfg.swift:306:3:306:3 | b | 'b -> Argument -V 10 -^ CallExpr -> b -> Argument -V 9 -^ CallExpr -> >> -> 1 -^ BinaryExpr -^ AssignExpr' | +| 308 | cfg.swift:308:3:308:39 | VariableDeclaration | 'VariableDeclaration -V Argument -V a1 -> Argument -V a2 -> Argument -V a3 -> Argument -V a4 -> Argument -V a5 -^ TupleExpr -> tupleWithA' | +| 309 | cfg.swift:309:11:309:20 | Argument | 'Argument -V a1 -> + -> b -> Argument -V 0 -^ CallExpr -^ BinaryExpr -> Argument -V a2 -> + -> b -> Argument -V 1 -^ CallExpr -^ BinaryExpr -> Argument -V a3 -> + -> b -> Argument -V 2 -^ CallExpr -^ BinaryExpr -> Argument -V a4 -> + -> b -> Argument -V 3 -^ CallExpr -^ BinaryExpr -> Argument -V a5 -> + -> b -> Argument -V 4 -^ CallExpr -^ BinaryExpr -^ TupleExpr -^ ReturnExpr' | +| 312 | cfg.swift:312:1:317:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 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 -^ BinaryExpr' | +| 313 | cfg.swift:313:16:316:3 | Block | 'Block' | +| 314 | cfg.swift:314:5:314:9 | print | 'print -> Argument -V x -^ CallExpr' | +| 315 | cfg.swift:315:5:315:5 | x | 'x -> -= -> 1 -^ CompoundAssignExpr' | +| 319 | cfg.swift:319:1:332:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 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 -^ BinaryExpr' | +| 320 | cfg.swift:320:16:330:3 | Block | 'Block' | +| 321 | cfg.swift:321:5:321:9 | print | 'print -> Argument -V x -^ CallExpr' | +| 322 | cfg.swift:322:5:322:5 | x | 'x -> -= -> 1 -^ CompoundAssignExpr' | +| 323 | cfg.swift:323:5:328:5 | IfExpr | 'IfExpr -V x -> > -> 100 -^ BinaryExpr' | +| 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 -^ BinaryExpr' | +| 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" -^ CallExpr' | +| 331 | cfg.swift:331:3:331:7 | print | 'print -> Argument -V "Done" -^ CallExpr' | +| 334 | cfg.swift:334:1:349:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 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 -^ BinaryExpr' | +| 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 -^ BinaryExpr' | +| 336 | cfg.swift:336:25:346:5 | Block | 'Block' | +| 337 | cfg.swift:337:7:337:11 | print | 'print -> Argument -V x -^ CallExpr' | +| 338 | cfg.swift:338:7:338:7 | x | 'x -> -= -> 1 -^ CompoundAssignExpr' | +| 339 | cfg.swift:339:7:344:7 | IfExpr | 'IfExpr -V x -> > -> 100 -^ BinaryExpr' | +| 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 -^ BinaryExpr' | +| 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" -^ CallExpr' | +| 347 | cfg.swift:347:5:347:9 | print | 'print -> Argument -V "Done" -^ CallExpr' | +| 351 | cfg.swift:351:1:356:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 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 -^ CallExpr' | +| 354 | cfg.swift:354:5:354:5 | x | 'x -> -= -> 1 -^ CompoundAssignExpr' | +| 355 | cfg.swift:355:11:355:11 | x | 'x -> >= -> 0 -^ BinaryExpr' | +| 358 | cfg.swift:358:1:363:1 | Block | 'Block' | +| 358 | cfg.swift:358:1:363:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 359 | cfg.swift:359:3:359:11 | VariableDeclaration | 'VariableDeclaration -V x -> 0' | +| 360 | cfg.swift:360:3:362:3 | WhileStmt | 'WhileStmt' | +| 360 | cfg.swift:360:9:360:9 | x | 'x -> < -> 10 -^ BinaryExpr' | +| 360 | cfg.swift:360:17:362:3 | Block | 'Block' | +| 361 | cfg.swift:361:5:361:5 | x | 'x -> += -> 1 -^ CompoundAssignExpr' | +| 365 | cfg.swift:365:1:374:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V OptionalC' | +| 366 | cfg.swift:366:3:366:11 | VariableDeclaration | 'VariableDeclaration -V c -> Optional -V C -^ GenericTypeExpr' | +| 367 | cfg.swift:367:3:369:3 | ConstructorDeclaration | 'ConstructorDeclaration' | +| 367 | cfg.swift:367:8:367:10 | arg | 'arg -^ Block' | +| 368 | cfg.swift:368:5:368:5 | c | 'c -> arg -^ AssignExpr' | +| 371 | cfg.swift:371:3:373:3 | Block | 'Block' | +| 371 | cfg.swift:371:3:373:3 | FunctionDeclaration | 'FunctionDeclaration' | +| 372 | cfg.swift:372:12:372:12 | c | 'c -^ ReturnExpr' | +| 376 | cfg.swift:376:1:378:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 376 | cfg.swift:376:19:376:19 | c | 'c -^ Block' | +| 377 | cfg.swift:377:10:377:10 | c | 'c -^ MemberAccessExpr -^ CallExpr -^ MemberAccessExpr -^ CallExpr -^ ReturnExpr' | +| 380 | cfg.swift:380:1:384:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 380 | cfg.swift:380:18:380:18 | x | 'x -> y -^ Block' | +| 381 | cfg.swift:381:10:383:3 | Block | 'Block' | +| 381 | cfg.swift:381:10:383:3 | FunctionExpr | 'FunctionExpr -^ ReturnExpr' | +| 382 | cfg.swift:382:12:382:12 | z | 'z -^ ReturnExpr' | +| 386 | cfg.swift:386:1:388:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 386 | cfg.swift:386:23:386:23 | t | 't -^ Block' | +| 387 | cfg.swift:387:10:387:10 | t | 't -^ MemberAccessExpr -> + -> t -^ MemberAccessExpr -^ BinaryExpr -> + -> t -^ MemberAccessExpr -^ BinaryExpr -> + -> Argument -V 1 -> Argument -V 2 -> Argument -V 3 -^ TupleExpr -^ MemberAccessExpr -^ BinaryExpr -^ ReturnExpr' | +| 390 | cfg.swift:390:1:394:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V Derived -^ BaseType -V C' | +| 391 | cfg.swift:391:3:393:3 | Block | 'Block' | +| 391 | cfg.swift:391:3:393:3 | ConstructorDeclaration | 'ConstructorDeclaration' | +| 392 | cfg.swift:392:5:392:9 | | ' -^ MemberAccessExpr -> Argument -V 0 -^ CallExpr' | +| 396 | cfg.swift:396:1:404:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 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 -^ UnaryExpr' | +| 398 | cfg.swift:398:9:398:18 | mightThrow | 'mightThrow -> Argument -V 0 -^ CallExpr' | +| 399 | cfg.swift:399:5:399:9 | print | 'print -> Argument -V "Did not throw." -^ CallExpr' | +| 400 | cfg.swift:400:10:400:19 | mightThrow | 'mightThrow -> Argument -V 0 -^ CallExpr -^ try! -^ UnaryExpr' | +| 401 | cfg.swift:401:5:401:9 | print | 'print -> Argument -V "Still did not throw." -^ CallExpr' | +| 403 | cfg.swift:403:10:403:10 | 0 | '0 -^ ReturnExpr' | +| 406 | cfg.swift:406:1:415:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V Structors' | +| 407 | cfg.swift:407:3:407:16 | VariableDeclaration | 'VariableDeclaration -V field -> Int' | +| 408 | cfg.swift:408:3:410:3 | Block | 'Block' | +| 408 | cfg.swift:408:3:410:3 | ConstructorDeclaration | 'ConstructorDeclaration' | +| 409 | cfg.swift:409:5:409:9 | field | 'field -> 10 -^ AssignExpr' | +| 412 | cfg.swift:412:3:414:3 | Block | 'Block' | +| 412 | cfg.swift:412:3:414:3 | DestructorDeclaration | 'DestructorDeclaration' | +| 413 | cfg.swift:413:5:413:9 | field | 'field -> 0 -^ AssignExpr' | +| 417 | cfg.swift:417:1:419:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 417 | cfg.swift:417:24:417:24 | x | 'x -> y -^ Block' | +| 418 | cfg.swift:418:10:418:25 | MapLiteral | 'MapLiteral -^ ReturnExpr' | +| 421 | cfg.swift:421:1:444:1 | Block | 'Block' | +| 421 | cfg.swift:421:1:444:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 422 | cfg.swift:422:3:427:3 | ClassLikeDeclaration | 'ClassLikeDeclaration -V MyLocalClass' | +| 423 | cfg.swift:423:5:423:14 | VariableDeclaration | 'VariableDeclaration -V x -> Int' | +| 424 | cfg.swift:424:5:426:5 | Block | 'Block' | +| 424 | cfg.swift:424:5:426:5 | ConstructorDeclaration | 'ConstructorDeclaration' | +| 425 | cfg.swift:425:7:425:7 | x | 'x -> 10 -^ AssignExpr' | +| 429 | cfg.swift:429:3:434:3 | ClassLikeDeclaration | 'ClassLikeDeclaration -V MyLocalStruct' | +| 430 | cfg.swift:430:5:430:14 | VariableDeclaration | 'VariableDeclaration -V x -> Int' | +| 431 | cfg.swift:431:5:433:5 | Block | 'Block' | +| 431 | cfg.swift:431:5:433:5 | ConstructorDeclaration | 'ConstructorDeclaration' | +| 432 | cfg.swift:432:7:432:7 | x | 'x -> 10 -^ AssignExpr' | +| 436 | cfg.swift:436:3:439:3 | ClassLikeDeclaration | 'ClassLikeDeclaration -V MyLocalEnum' | +| 437 | cfg.swift:437:10:437:10 | VariableDeclaration | 'VariableDeclaration -V A' | +| 438 | cfg.swift:438:10:438:10 | VariableDeclaration | 'VariableDeclaration -V B' | +| 441 | cfg.swift:441:3:441:22 | VariableDeclaration | 'VariableDeclaration -V myLocalVar -> Int' | +| 443 | cfg.swift:443:10:443:10 | 0 | '0 -^ ReturnExpr' | +| 446 | cfg.swift:446:1:448:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V B' | +| 447 | cfg.swift:447:3:447:13 | VariableDeclaration | 'VariableDeclaration -V x -> Int' | +| 450 | cfg.swift:450:1:454:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V A' | +| 451 | cfg.swift:451:3:451:11 | VariableDeclaration | 'VariableDeclaration -V b -> B' | +| 452 | cfg.swift:452:3:452:14 | VariableDeclaration | 'VariableDeclaration -V bs -> Array -V B -^ GenericTypeExpr' | +| 453 | cfg.swift:453:3:453:15 | VariableDeclaration | 'VariableDeclaration -V mayB -> Optional -V B -^ GenericTypeExpr' | +| 456 | cfg.swift:456:1:466:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 456 | cfg.swift:456:11:456:11 | a | 'a -^ Block' | +| 457 | cfg.swift:457:3:457:24 | VariableDeclaration | 'VariableDeclaration -V kpGet_b_x -> ' | +| 458 | cfg.swift:458:3:458:31 | VariableDeclaration | 'VariableDeclaration -V kpGet_bs_0_x -> ' | +| 459 | cfg.swift:459:3:459:37 | VariableDeclaration | 'VariableDeclaration -V kpGet_mayB_force_x -> ' | +| 460 | cfg.swift:460:3:460:31 | VariableDeclaration | 'VariableDeclaration -V kpGet_mayB_x -> ' | +| 462 | cfg.swift:462:3:462:45 | VariableDeclaration | 'VariableDeclaration -V apply_kpGet_b_x -> a -> Argument -V kpGet_b_x -^ CallExpr' | +| 463 | cfg.swift:463:3:463:51 | VariableDeclaration | 'VariableDeclaration -V apply_kpGet_bs_0_x -> a -> Argument -V kpGet_bs_0_x -^ CallExpr' | +| 464 | cfg.swift:464:3:464:63 | VariableDeclaration | 'VariableDeclaration -V apply_kpGet_mayB_force_x -> a -> Argument -V kpGet_mayB_force_x -^ CallExpr' | +| 465 | cfg.swift:465:3:465:51 | VariableDeclaration | 'VariableDeclaration -V apply_kpGet_mayB_x -> a -> Argument -V kpGet_mayB_x -^ CallExpr' | +| 468 | cfg.swift:468:1:495:1 | Block | 'Block' | +| 468 | cfg.swift:468:1:495:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 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 | Block | 'Block' | +| 497 | cfg.swift:497:1:522:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 498 | cfg.swift:498:3:498:11 | VariableDeclaration | 'VariableDeclaration -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 -^ CompoundAssignExpr' | +| 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 -^ CompoundAssignExpr' | +| 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 -^ CompoundAssignExpr' | +| 512 | cfg.swift:512:3:514:3 | GuardIfStmt | 'GuardIfStmt -V -> Block' | +| 513 | cfg.swift:513:5:513:5 | x | 'x -> += -> 1 -^ CompoundAssignExpr' | +| 516 | cfg.swift:516:3:519:3 | IfExpr | 'IfExpr -V BinaryExpr -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 -^ CompoundAssignExpr' | +| 521 | cfg.swift:521:10:521:10 | x | 'x -^ ReturnExpr' | +| 524 | cfg.swift:524:1:538:1 | Block | 'Block' | +| 524 | cfg.swift:524:1:538:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 525 | cfg.swift:525:5:533:6 | VariableDeclaration | 'VariableDeclaration -V stream -> AsyncStream -> Argument -V Int -^ MemberAccessExpr -> Argument -V . -^ MemberAccessExpr -> Argument -V 5 -^ CallExpr -> Argument -V FunctionExpr -^ CallExpr' | +| 525 | cfg.swift:525:78:533:5 | Block | 'Block' | +| 526 | cfg.swift:526:9:526:20 | continuation | 'continuation' | +| 527 | cfg.swift:527:13:527:16 | Task | 'Task -^ MemberAccessExpr -^ Argument -V FunctionExpr -^ CallExpr' | +| 527 | cfg.swift:527:27:532:13 | Block | 'Block' | +| 528 | cfg.swift:528:17:530:17 | ForEachStmt | 'ForEachStmt -V 1 -> ... -> 100 -^ BinaryExpr' | +| 528 | cfg.swift:528:21:528:21 | i | 'i -> Block' | +| 529 | cfg.swift:529:21:529:32 | continuation | 'continuation -^ MemberAccessExpr -> Argument -V i -^ CallExpr' | +| 531 | cfg.swift:531:17:531:28 | continuation | 'continuation -^ MemberAccessExpr -^ CallExpr' | +| 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 -^ CallExpr' | +| 540 | cfg.swift:540:1:544:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 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 | BinaryExpr | 'BinaryExpr -V x' | +| 543 | cfg.swift:543:9:543:9 | 0 | '0' | +| 546 | cfg.swift:546:1:553:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 546 | cfg.swift:546:25:546:25 | x | 'x -^ Block' | +| 547 | cfg.swift:547:3:552:3 | IfExpr | 'IfExpr -V BinaryExpr -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 | FunctionDeclaration | 'FunctionDeclaration' | +| 555 | cfg.swift:555:24:555:27 | expr | 'expr -^ Block' | +| 556 | cfg.swift:556:10:556:13 | expr | 'expr -^ CallExpr -^ ReturnExpr' | +| 559 | cfg.swift:559:1:561:1 | Block | 'Block' | +| 559 | cfg.swift:559:1:561:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 560 | cfg.swift:560:3:560:17 | usesAutoclosure | 'usesAutoclosure -> Argument -V 1 -^ CallExpr' | +| 565 | cfg.swift:565:1:567:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V MyProtocol' | +| 566 | cfg.swift:566:2:566:21 | Block | 'Block' | +| 566 | cfg.swift:566:2:566:21 | FunctionDeclaration | 'FunctionDeclaration' | +| 569 | cfg.swift:569:1:571:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V MyProcotolImpl -^ BaseType -V MyProtocol' | +| 570 | cfg.swift:570:2:570:34 | Block | 'Block -V 0 -^ ReturnExpr' | +| 570 | cfg.swift:570:2:570:34 | FunctionDeclaration | 'FunctionDeclaration' | +| 573 | cfg.swift:573:1:573:62 | Block | 'Block -V MyProcotolImpl -^ CallExpr -^ ReturnExpr' | +| 573 | cfg.swift:573:1:573:62 | FunctionDeclaration | 'FunctionDeclaration' | +| 574 | cfg.swift:574:1:574:70 | Block | 'Block -V MyProcotolImpl -^ CallExpr -^ ReturnExpr' | +| 574 | cfg.swift:574:1:574:70 | FunctionDeclaration | 'FunctionDeclaration' | +| 576 | cfg.swift:576:1:576:23 | FunctionDeclaration | 'FunctionDeclaration' | +| 576 | cfg.swift:576:11:576:13 | arg | 'arg -^ Block' | +| 578 | cfg.swift:578:1:583:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 578 | cfg.swift:578:30:578:30 | x | 'x -> y -^ Block' | +| 579 | cfg.swift:579:2:579:5 | sink | 'sink -> Argument -V x -^ MemberAccessExpr -^ CallExpr -^ CallExpr' | +| 580 | cfg.swift:580:2:580:5 | sink | 'sink -> Argument -V y -^ MemberAccessExpr -^ CallExpr -^ CallExpr' | +| 581 | cfg.swift:581:2:581:5 | sink | 'sink -> Argument -V getMyProtocol -^ CallExpr -^ MemberAccessExpr -^ CallExpr -^ CallExpr' | +| 582 | cfg.swift:582:2:582:5 | sink | 'sink -> Argument -V getMyProtocolImpl -^ CallExpr -^ MemberAccessExpr -^ CallExpr -^ CallExpr' | +| 585 | cfg.swift:585:1:593:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 585 | cfg.swift:585:23:585:23 | x | 'x -^ Block' | +| 586 | cfg.swift:586:3:589:3 | VariableDeclaration | 'VariableDeclaration -V a -> SwitchExpr -V x' | +| 587 | cfg.swift:587:5:587:17 | Block | 'Block -V 1' | +| 587 | cfg.swift:587:5:587:17 | SwitchCase | 'SwitchCase -V 0 -> ..< -> 5 -^ BinaryExpr' | +| 588 | cfg.swift:588:5:588:14 | SwitchCase | 'SwitchCase -V Block -V 2' | +| 590 | cfg.swift:590:3:592:18 | VariableDeclaration | 'VariableDeclaration -V b' | +| 591 | cfg.swift:591:9:592:18 | IfExpr | 'IfExpr -V x -> < -> 42 -^ BinaryExpr' | +| 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 | ClassLikeDeclaration | 'ClassLikeDeclaration -V ValueGenericsStruct -> TypeParameter -V N -> Int' | +| 597 | cfg.swift:597:5:597:13 | VariableDeclaration | 'VariableDeclaration -V x -> N' | +| 600 | cfg.swift:600:1:604:1 | FunctionDeclaration | 'FunctionDeclaration' | +| 600 | cfg.swift:600:36:600:40 | value | 'value -^ Block' | +| 601 | cfg.swift:601:5:601:13 | VariableDeclaration | 'VariableDeclaration -V x -> N' | +| 602 | cfg.swift:602:5:602:9 | print | 'print -> Argument -V x -^ CallExpr' | +| 603 | cfg.swift:603:5:603:5 | _ | '_ -> value -^ AssignExpr' | 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..cf0b25228239 --- /dev/null +++ b/unified/ql/test/library-tests/controlflow/cfg.expected @@ -0,0 +1,164 @@ +bbContinues +| cfg.swift:62:6:62:6 | y | 'y goto Block(-1)' | +| cfg.swift:147:5:147:5 | Block | 'Block goto true(+3)' | +| cfg.swift:525:78:525:78 | Block | 'Block goto Task(+2)' | +| cfg.swift:526:9:526:20 | continuation | 'continuation goto Block(-1)' | +bbStep +| cfg.swift:30:9:30:24 | CallExpr | 'CallExpr : exception -> CatchClause(+5)' | +| cfg.swift:30:9:30:24 | CallExpr | 'CallExpr : successor -> try(+0)' | +| cfg.swift:33:5:33:33 | CallExpr | 'CallExpr : successor -> 0(+11)' | +| cfg.swift:35:5:35:5 | OrPattern | 'OrPattern : match -> Block(+0)' | +| cfg.swift:35:5:35:5 | OrPattern | 'OrPattern : no-match -> CatchClause(+2)' | +| cfg.swift:37:11:37:39 | CallExpr | 'CallExpr : match -> Block(+0)' | +| cfg.swift:37:11:37:39 | CallExpr | 'CallExpr : 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 | CallExpr | 'CallExpr : successor -> 0(+4)' | +| cfg.swift:42:5:42:35 | CallExpr | 'CallExpr : successor -> 0(+2)' | +| cfg.swift:140:12:140:17 | BinaryExpr | 'BinaryExpr : empty -> SwitchExpr(+3)' | +| cfg.swift:140:12:140:17 | BinaryExpr | 'BinaryExpr : 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:5:144:5 | OrPattern | 'OrPattern : match -> Block(+0)' | +| cfg.swift:144:5:144:5 | OrPattern | 'OrPattern : no-match -> SwitchCase(+3)' | +| cfg.swift:147:10:147:10 | ConditionalPattern | 'ConditionalPattern : match -> Block(+0)' | +| cfg.swift:147:10:147:10 | ConditionalPattern | 'ConditionalPattern : no-match -> SwitchCase(+4)' | +| cfg.swift:148:10:148:15 | BinaryExpr | 'BinaryExpr : false -> x(-1)' | +| cfg.swift:148:10:148:15 | BinaryExpr | 'BinaryExpr : true -> x(+1)' | +| cfg.swift:149:13:149:17 | BinaryExpr | 'BinaryExpr : successor -> x(-2)' | +| cfg.swift:187:6:187:10 | BinaryExpr | 'BinaryExpr : false -> IfExpr(+3)' | +| cfg.swift:187:6:187:10 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:190:11:190:16 | BinaryExpr | 'BinaryExpr : false,false,false -> Block(+5)' | +| cfg.swift:190:11:190:16 | BinaryExpr | 'BinaryExpr : true -> x(+1)' | +| cfg.swift:191:13:191:17 | BinaryExpr | 'BinaryExpr : false,false,false -> Block(+4)' | +| cfg.swift:191:13:191:17 | BinaryExpr | 'BinaryExpr : true -> UnaryExpr(+1)' | +| cfg.swift:192:15:192:20 | BinaryExpr | 'BinaryExpr : false -> Block(+0)' | +| cfg.swift:192:15:192:20 | BinaryExpr | 'BinaryExpr : 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 | BinaryExpr | 'BinaryExpr : false -> x(+6)' | +| cfg.swift:208:6:208:10 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:210:8:210:13 | BinaryExpr | 'BinaryExpr : false -> x(+4)' | +| cfg.swift:210:8:210:13 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:211:7:211:15 | AssignExpr | 'AssignExpr : 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 | CallExpr | 'CallExpr : false -> Block(+3)' | +| cfg.swift:228:7:228:17 | CallExpr | 'CallExpr : 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 | CallExpr | 'CallExpr : 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 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:315:5:315:10 | CompoundAssignExpr | 'CompoundAssignExpr : successor -> x(-2)' | +| cfg.swift:320:3:320:3 | WhileStmt | 'WhileStmt : successor -> x(+0)' | +| cfg.swift:320:9:320:14 | BinaryExpr | 'BinaryExpr : false -> print(+11)' | +| cfg.swift:320:9:320:14 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:323:8:323:14 | BinaryExpr | 'BinaryExpr : false -> IfExpr(+3)' | +| cfg.swift:323:8:323:14 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:324:7:324:11 | BreakExpr | 'BreakExpr : break -> print(+7)' | +| cfg.swift:326:13:326:18 | BinaryExpr | 'BinaryExpr : false -> print(+3)' | +| cfg.swift:326:13:326:18 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:327:7:327:14 | ContinueExpr | 'ContinueExpr : continue -> x(-7)' | +| cfg.swift:329:5:329:17 | CallExpr | 'CallExpr : successor -> x(-9)' | +| cfg.swift:335:10:335:10 | WhileStmt | 'WhileStmt : successor -> x(+0)' | +| cfg.swift:335:16:335:21 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:336:12:336:12 | WhileStmt | 'WhileStmt : successor -> x(+0)' | +| cfg.swift:336:18:336:23 | BinaryExpr | 'BinaryExpr : false -> print(+11)' | +| cfg.swift:336:18:336:23 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:339:10:339:16 | BinaryExpr | 'BinaryExpr : false -> IfExpr(+3)' | +| cfg.swift:339:10:339:16 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:342:15:342:20 | BinaryExpr | 'BinaryExpr : false -> print(+3)' | +| cfg.swift:342:15:342:20 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:343:9:343:22 | ContinueExpr | 'ContinueExpr : continue -> x(-7)' | +| cfg.swift:345:7:345:19 | CallExpr | 'CallExpr : successor -> x(-9)' | +| cfg.swift:347:5:347:17 | CallExpr | 'CallExpr : successor -> x(-12)' | +| cfg.swift:352:3:352:3 | DoWhileStmt | 'DoWhileStmt : successor -> Block(+0)' | +| cfg.swift:355:11:355:16 | BinaryExpr | 'BinaryExpr : true -> Block(-3)' | +| cfg.swift:360:3:360:3 | WhileStmt | 'WhileStmt : successor -> x(+0)' | +| cfg.swift:360:9:360:14 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +| cfg.swift:361:5:361:10 | CompoundAssignExpr | 'CompoundAssignExpr : successor -> x(-1)' | +| cfg.swift:398:9:398:24 | CallExpr | 'CallExpr : 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 | CompoundAssignExpr | 'CompoundAssignExpr : 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 | CompoundAssignExpr | 'CompoundAssignExpr : 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 | CompoundAssignExpr | 'CompoundAssignExpr : successor -> GuardIfStmt(+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 | CompoundAssignExpr | 'CompoundAssignExpr : successor -> x(+3)' | +| cfg.swift:528:26:528:32 | BinaryExpr | 'BinaryExpr : empty -> continuation(+3)' | +| cfg.swift:528:26:528:32 | BinaryExpr | 'BinaryExpr : non-empty -> i(+0)' | +| cfg.swift:529:21:529:41 | CallExpr | 'CallExpr : successor -> continuation(+2)' | +| cfg.swift:529:21:529:41 | CallExpr | 'CallExpr : successor -> i(-1)' | +| cfg.swift:535:24:535:29 | stream | 'stream : non-empty -> i(+0)' | +| cfg.swift:536:9:536:16 | CallExpr | 'CallExpr : 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 | BinaryExpr | 'BinaryExpr : match -> Block(+0)' | +| cfg.swift:587:10:587:14 | BinaryExpr | 'BinaryExpr : no-match -> SwitchCase(+1)' | +| cfg.swift:587:17:587:17 | 1 | '1 : successor -> VariableDeclaration(+3)' | +| cfg.swift:588:14:588:14 | 2 | '2 : successor -> VariableDeclaration(+2)' | +| cfg.swift:591:13:591:18 | BinaryExpr | 'BinaryExpr : false -> Block(+1)' | +| cfg.swift:591:13:591:18 | BinaryExpr | 'BinaryExpr : true -> Block(+0)' | +noCfg +| cfg.swift:23:9:23:9 | x | +| cfg.swift:24:5:24:42 | ThrowExpr | +| cfg.swift:47:42:47:47 | String | +| cfg.swift:53:34:53:34 | _ | +| cfg.swift:60:34:60:34 | _ | +| cfg.swift:66:6:66:17 | callClosures | +| cfg.swift:77:6:77:27 | forceAndBackToOptional | +| cfg.swift:83:6:83:14 | testInOut | +| cfg.swift:106:8:106:15 | getMyInt | +| 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:236:6:236:23 | constant_condition | +| cfg.swift:238:5:238:9 | print | +| cfg.swift:279:6:279:22 | testSubscriptExpr | +| cfg.swift:358:6:358:28 | loop_with_identity_expr | +| cfg.swift:371:8:371:18 | getOptional | +| cfg.swift:380:45:380:47 | Int | +| cfg.swift:381:13:381:13 | z | +| cfg.swift:421:6:421:22 | localDeclarations | +| cfg.swift:468:6:468:17 | testIfConfig | +| cfg.swift:497:6:497:18 | testAvailable | +| cfg.swift:524:6:524:17 | testAsyncFor | +| cfg.swift:559:6:559:20 | autoclosureTest | +nonSimple +| cfg.swift:10:1:10:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V MyError -^ BaseType -V Error' | +| cfg.swift:35:5:35:5 | CatchClause | 'CatchClause -V MyError -^ MemberAccessExpr -> isZero -> Argument -V x -^ CallExpr -? MyError -^ MemberAccessExpr -^ ConditionalPattern -^ OrPattern' | +| cfg.swift:209:5:209:5 | x | 'x -> x -? - -^ UnaryExpr -^ AssignExpr' | +| cfg.swift:390:1:390:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V Derived -^ BaseType -V C' | +| cfg.swift:527:13:527:16 | Task | 'Task -^ MemberAccessExpr -^ Argument -V FunctionExpr -^ CallExpr' | +| cfg.swift:569:1:569:1 | ClassLikeDeclaration | 'ClassLikeDeclaration -V MyProcotolImpl -^ BaseType -V MyProtocol' | 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..e8bb40e33f8e --- /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 { // $ nonSimple='ClassLikeDeclaration -V MyError -^ BaseType -V Error' + case error1, error2 + case error3(withParam: Int) +} + +func isZero(x : Int) -> Bool { + return x == 0 +} + +func mightThrow(x : Int) throws -> Void { + guard x >= 0 else { + throw MyError.error1 + } + guard x <= 0 else { // $ noCfg + throw MyError.error3(withParam: x + 1) // $ noCfg + } +} + +func tryCatch(x : Int) -> Int { + do { + try mightThrow(x: 0) // $ bbStep='CallExpr : exception -> CatchClause(+5)' bbStep='CallExpr : successor -> try(+0)' + print("Did not throw.") + try! mightThrow(x: 0) + print("Still did not throw.") // $ bbStep='CallExpr : 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 -^ MemberAccessExpr -> isZero -> Argument -V x -^ CallExpr -? MyError -^ MemberAccessExpr -^ ConditionalPattern -^ OrPattern' + return 0 + } catch MyError.error3(let withParam) { // $ bbStep='CallExpr : match -> Block(+0)' bbStep='CallExpr : no-match -> CatchClause(+2)' + return withParam + } catch is MyError { // $ bbStep=' : match -> Block(+0)' bbStep=' : no-match -> CatchClause(+2)' + print("MyError") // $ bbStep='CallExpr : successor -> 0(+4)' + } catch { + print("Unknown error \(error)") // $ bbStep='CallExpr : 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 // $ bbContinues='y goto Block(-1)' + } +} + +func callClosures() { // $ noCfg + 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='BinaryExpr : empty -> SwitchExpr(+3)' bbStep='BinaryExpr : non-empty -> _(+0)' + { } // $ bbStep='Block : successor -> _(-1)' bbStep='Block : successor -> SwitchExpr(+2)' + + switch x { + case 0, 1: // $ bbStep='OrPattern : match -> Block(+0)' bbStep='OrPattern : no-match -> SwitchCase(+3)' + return true + return true // $ noCfg + case x where // $ bbContinues='Block goto true(+3)' bbStep='ConditionalPattern : match -> Block(+0)' bbStep='ConditionalPattern : no-match -> SwitchCase(+4)' + (x >= 2) && // $ bbStep='BinaryExpr : false -> x(-1)' bbStep='BinaryExpr : true -> x(+1)' + x < 5: // $ bbStep='BinaryExpr : 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='BinaryExpr : false -> IfExpr(+3)' bbStep='BinaryExpr : true -> Block(+0)' + print("x is greater than 2") + } + else if x <= 2 && // $ bbStep='BinaryExpr : true -> x(+1)' bbStep='BinaryExpr : false,false,false -> Block(+5)' + x > 0 && // $ bbStep='BinaryExpr : true -> UnaryExpr(+1)' bbStep='BinaryExpr : false,false,false -> Block(+4)' + !(x == 5) { // $ bbStep='BinaryExpr : false -> Block(+0)' bbStep='BinaryExpr : 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='BinaryExpr : true -> Block(+0)' bbStep='BinaryExpr : false -> x(+6)' + x = -x // $ nonSimple='x -> x -? - -^ UnaryExpr -^ AssignExpr' + if x > 10 { // $ bbStep='BinaryExpr : true -> Block(+0)' bbStep='BinaryExpr : false -> x(+4)' + x = x - 1 // $ bbStep='AssignExpr : 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='CallExpr : true,true -> Block(+0)' bbStep='CallExpr : false -> Block(+3)' + return "b" + } + else { + return "!b" + } +} + +func constant_condition() { // $ noCfg + 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='CallExpr : 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='BinaryExpr : true -> Block(+0)' + print(x) + x -= 1 // $ bbStep='CompoundAssignExpr : successor -> x(-2)' + } +} + +func loop2(x : inout Int) { + while x >= 0 { // $ bbStep='WhileStmt : successor -> x(+0)' bbStep='BinaryExpr : false -> print(+11)' bbStep='BinaryExpr : true -> Block(+0)' + print(x) + x -= 1 + if x > 100 { // $ bbStep='BinaryExpr : false -> IfExpr(+3)' bbStep='BinaryExpr : true -> Block(+0)' + break // $ bbStep='BreakExpr : break -> print(+7)' + } + else if x > 50 { // $ bbStep='BinaryExpr : false -> print(+3)' bbStep='BinaryExpr : true -> Block(+0)' + continue // $ bbStep='ContinueExpr : continue -> x(-7)' + } + print("Iter") // $ bbStep='CallExpr : successor -> x(-9)' + } + print("Done") +} + +func labeledLoop(x : inout Int) { + outer: while x >= 0 { // $ bbStep='WhileStmt : successor -> x(+0)' bbStep='BinaryExpr : true -> Block(+0)' + inner: while x >= 0 { // $ bbStep='BinaryExpr : false -> print(+11)' bbStep='WhileStmt : successor -> x(+0)' bbStep='BinaryExpr : true -> Block(+0)' + print(x) + x -= 1 + if x > 100 { // $ bbStep='BinaryExpr : false -> IfExpr(+3)' bbStep='BinaryExpr : true -> Block(+0)' + break outer + } + else if x > 50 { // $ bbStep='BinaryExpr : false -> print(+3)' bbStep='BinaryExpr : true -> Block(+0)' + continue inner // $ bbStep='ContinueExpr : continue -> x(-7)' + } + print("Iter") // $ bbStep='CallExpr : successor -> x(-9)' + } + print("Done") // $ bbStep='CallExpr : successor -> x(-12)' + } +} + +func testRepeat(x : inout Int) { + repeat { // $ bbStep='DoWhileStmt : successor -> Block(+0)' + print(x) + x -= 1 + } while x >= 0 // $ bbStep='BinaryExpr : true -> Block(-3)' +} + +func loop_with_identity_expr() { // $ noCfg + var x = 0 + while(x < 10) { // $ bbStep='WhileStmt : successor -> x(+0)' bbStep='BinaryExpr : true -> Block(+0)' + x += 1 // $ bbStep='CompoundAssignExpr : 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 // $ noCfg + 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 { // $ nonSimple='ClassLikeDeclaration -V Derived -^ BaseType -V C' + init() { + super.init(n: 0) + } +} + +func doWithoutCatch(x : Int) throws -> Int { + do { + try mightThrow(x: 0) // $ bbStep='CallExpr : successor -> try(+0)' + print("Did not throw.") + try! mightThrow(x: 0) + print("Still did not throw.") + } + return 0 +} + +class Structors { + var field: Int + init() { + 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() { + x = 10 + } + } + + struct MyLocalStruct { + var x: Int + init() { + 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() { // $ noCfg +#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='CompoundAssignExpr : successor -> IfExpr(+3)' + } + + if #available(macOS 10.13, *) { // $ bbStep=' : false -> IfExpr(+4)' bbStep=' : true -> Block(+0)' + x += 1 // $ bbStep='CompoundAssignExpr : successor -> IfExpr(+3)' + } + + if #unavailable(iOS 10, watchOS 10, macOS 10) { // $ bbStep=' : false -> GuardIfStmt(+4)' bbStep=' : true -> Block(+0)' + x += 1 // $ bbStep='CompoundAssignExpr : successor -> GuardIfStmt(+3)' + } + + guard #available(macOS 12, *) else { + x += 1 + } + + 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='CompoundAssignExpr : successor -> x(+3)' + } + + return x +} + +func testAsyncFor () async { // $ noCfg + var stream = AsyncStream(Int.self, bufferingPolicy: .bufferingNewest(5), { // $ bbContinues='Block goto Task(+2)' + continuation in // $ bbContinues='continuation goto Block(-1)' + Task.detached { // $ nonSimple='Task -^ MemberAccessExpr -^ Argument -V FunctionExpr -^ CallExpr' + for i in 1...100 { // $ bbStep='BinaryExpr : empty -> continuation(+3)' bbStep='BinaryExpr : non-empty -> i(+0)' + continuation.yield(i) // $ bbStep='CallExpr : successor -> continuation(+2)' bbStep='CallExpr : successor -> i(-1)' + } + continuation.finish() + } + }) + + for try await i in stream { // $ bbStep='stream : non-empty -> i(+0)' + print(i) // $ bbStep='CallExpr : 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() { // $ noCfg + usesAutoclosure(1) +} + +// --- + +protocol MyProtocol { + func source() -> Int +} + +class MyProcotolImpl : MyProtocol { // $ nonSimple='ClassLikeDeclaration -V MyProcotolImpl -^ BaseType -V 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='BinaryExpr : match -> Block(+0)' bbStep='BinaryExpr : no-match -> SwitchCase(+1)' bbStep='1 : successor -> VariableDeclaration(+3)' + default: 2 // $ bbStep='2 : successor -> VariableDeclaration(+2)' + } + let b = + if (x < 42) { 1 } // $ bbStep='BinaryExpr : false -> Block(+1)' bbStep='BinaryExpr : 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/implicit-self.swift b/unified/ql/test/library-tests/dataflow/implicit-self.swift new file mode 100644 index 000000000000..8e13479d51fe --- /dev/null +++ b/unified/ql/test/library-tests/dataflow/implicit-self.swift @@ -0,0 +1,56 @@ +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 + } +} 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..f6df03922f1f --- /dev/null +++ b/unified/ql/test/library-tests/dataflow/test.expected @@ -0,0 +1,265 @@ +models +edges +| implicit-self.swift:11:9:11:12 | [post] self [x] | implicit-self.swift:12:14:12:17 | self [x] | provenance | | +| implicit-self.swift:11:9:11:14 | MemberAccessExpr | implicit-self.swift:11:9:11:12 | [post] self [x] | provenance | | +| implicit-self.swift:11:18:11:31 | CallExpr | implicit-self.swift:11:9:11:14 | MemberAccessExpr | provenance | | +| implicit-self.swift:12:14:12:17 | self [x] | implicit-self.swift:12:14:12:19 | MemberAccessExpr | provenance | | +| implicit-self.swift:17:9:17:9 | x | implicit-self.swift:18:14:18:14 | x | provenance | | +| implicit-self.swift:17:13:17:26 | CallExpr | implicit-self.swift:17:9:17:9 | x | provenance | | +| implicit-self.swift:23:9:23:9 | x | implicit-self.swift:24:14:24:17 | self [x] | provenance | | +| implicit-self.swift:23:13:23:26 | CallExpr | implicit-self.swift:23:9:23:9 | x | provenance | | +| implicit-self.swift:24:14:24:17 | self [x] | implicit-self.swift:24:14:24:19 | MemberAccessExpr | provenance | | +| implicit-self.swift:29:9:29:12 | [post] self [x] | implicit-self.swift:30:14:30:14 | x | provenance | | +| implicit-self.swift:29:9:29:14 | MemberAccessExpr | implicit-self.swift:29:9:29:12 | [post] self [x] | provenance | | +| implicit-self.swift:29:18:29:31 | CallExpr | implicit-self.swift:29:9:29:14 | MemberAccessExpr | provenance | | +| implicit-self.swift:35:9:35:12 | [post] self [box, x] | implicit-self.swift:36:14:36:17 | self [box, x] | provenance | | +| implicit-self.swift:35:9:35:16 | [post] MemberAccessExpr [x] | implicit-self.swift:35:9:35:12 | [post] self [box, x] | provenance | | +| implicit-self.swift:35:9:35:18 | MemberAccessExpr | implicit-self.swift:35:9:35:16 | [post] MemberAccessExpr [x] | provenance | | +| implicit-self.swift:35:22:35:35 | CallExpr | implicit-self.swift:35:9:35:18 | MemberAccessExpr | provenance | | +| implicit-self.swift:36:14:36:17 | self [box, x] | implicit-self.swift:36:14:36:21 | MemberAccessExpr [x] | provenance | | +| implicit-self.swift:36:14:36:21 | MemberAccessExpr [x] | implicit-self.swift:36:14:36:23 | MemberAccessExpr | provenance | | +| implicit-self.swift:41:9:41:11 | [post] box [x] | implicit-self.swift:42:14:42:16 | box [x] | provenance | | +| implicit-self.swift:41:9:41:13 | MemberAccessExpr | implicit-self.swift:41:9:41:11 | [post] box [x] | provenance | | +| implicit-self.swift:41:17:41:30 | CallExpr | implicit-self.swift:41:9:41:13 | MemberAccessExpr | provenance | | +| implicit-self.swift:42:14:42:16 | box [x] | implicit-self.swift:42:14:42:18 | MemberAccessExpr | provenance | | +| implicit-self.swift:47:9:47:11 | [post] box [x] | implicit-self.swift:48:14:48:17 | self [box, x] | provenance | | +| implicit-self.swift:47:9:47:13 | MemberAccessExpr | implicit-self.swift:47:9:47:11 | [post] box [x] | provenance | | +| implicit-self.swift:47:17:47:30 | CallExpr | implicit-self.swift:47:9:47:13 | MemberAccessExpr | provenance | | +| implicit-self.swift:48:14:48:17 | self [box, x] | implicit-self.swift:48:14:48:21 | MemberAccessExpr [x] | provenance | | +| implicit-self.swift:48:14:48:21 | MemberAccessExpr [x] | implicit-self.swift:48:14:48:23 | MemberAccessExpr | provenance | | +| implicit-self.swift:53:9:53:12 | [post] self [box, x] | implicit-self.swift:54:14:54:16 | box [x] | provenance | | +| implicit-self.swift:53:9:53:16 | [post] MemberAccessExpr [x] | implicit-self.swift:53:9:53:12 | [post] self [box, x] | provenance | | +| implicit-self.swift:53:9:53:18 | MemberAccessExpr | implicit-self.swift:53:9:53:16 | [post] MemberAccessExpr [x] | provenance | | +| implicit-self.swift:53:22:53:35 | CallExpr | implicit-self.swift:53:9:53:18 | MemberAccessExpr | provenance | | +| implicit-self.swift:54:14:54:16 | box [x] | implicit-self.swift:54:14:54:18 | MemberAccessExpr | provenance | | +| test.swift:6:10:6:23 | CallExpr | test.swift:6:10:6:32 | BinaryExpr | provenance | | +| test.swift:7:19:7:32 | CallExpr | test.swift:7:10:7:32 | BinaryExpr | provenance | | +| test.swift:9:13:9:26 | CallExpr | test.swift:9:10:9:33 | StringInterpolationExpr | provenance | | +| test.swift:10:18:10:31 | CallExpr | test.swift:10:10:10:33 | StringInterpolationExpr | provenance | | +| test.swift:11:18:11:31 | CallExpr | test.swift:11:10:11:38 | StringInterpolationExpr | provenance | | +| test.swift:16:10:16:33 | TupleExpr [0] | test.swift:16:10:16:35 | MemberAccessExpr | provenance | | +| test.swift:16:11:16:25 | CallExpr | test.swift:16:10:16:33 | TupleExpr [0] | provenance | | +| test.swift:19:10:19:33 | TupleExpr [1] | test.swift:19:10:19:35 | MemberAccessExpr | provenance | | +| test.swift:19:19:19:32 | CallExpr | test.swift:19:10:19:33 | TupleExpr [1] | provenance | | +| test.swift:23:9:23:9 | a | test.swift:24:10:24:10 | a | provenance | | +| test.swift:23:13:23:26 | CallExpr | test.swift:23:9:23:9 | a | provenance | | +| test.swift:28:9:28:14 | TupleExpr [0] | test.swift:28:10:28:10 | a | provenance | | +| test.swift:28:10:28:10 | a | test.swift:29:10:29:10 | a | provenance | | +| test.swift:28:18:28:41 | TupleExpr [0] | test.swift:28:9:28:14 | TupleExpr [0] | provenance | | +| test.swift:28:19:28:33 | CallExpr | test.swift:28:18:28:41 | TupleExpr [0] | provenance | | +| test.swift:32:9:32:14 | TupleExpr [1] | test.swift:32:13:32:13 | d | provenance | | +| test.swift:32:13:32:13 | d | test.swift:34:10:34:10 | d | provenance | | +| test.swift:32:18:32:41 | TupleExpr [1] | test.swift:32:9:32:14 | TupleExpr [1] | provenance | | +| test.swift:32:27:32:40 | CallExpr | test.swift:32:18:32:41 | TupleExpr [1] | provenance | | +| test.swift:38:9:38:9 | a | test.swift:39:10:39:10 | a | provenance | | +| test.swift:38:13:38:26 | CallExpr | test.swift:38:9:38:9 | a | provenance | | +| test.swift:46:5:46:9 | [post] tuple [0] | test.swift:47:10:47:14 | tuple [0] | provenance | | +| test.swift:46:5:46:11 | MemberAccessExpr | test.swift:46:5:46:9 | [post] tuple [0] | provenance | | +| test.swift:46:15:46:28 | CallExpr | test.swift:46:5:46:11 | MemberAccessExpr | provenance | | +| test.swift:47:10:47:14 | tuple [0] | test.swift:47:10:47:16 | MemberAccessExpr | provenance | | +| test.swift:53:5:53:14 | [post] deep_tuple [1, 0] | test.swift:58:10:58:19 | deep_tuple [1, 0] | provenance | | +| test.swift:53:5:53:16 | [post] MemberAccessExpr [0] | test.swift:53:5:53:14 | [post] deep_tuple [1, 0] | provenance | | +| test.swift:53:5:53:18 | MemberAccessExpr | test.swift:53:5:53:16 | [post] MemberAccessExpr [0] | provenance | | +| test.swift:53:22:53:35 | CallExpr | test.swift:53:5:53:18 | MemberAccessExpr | provenance | | +| test.swift:58:10:58:19 | deep_tuple [1, 0] | test.swift:58:10:58:21 | MemberAccessExpr [0] | provenance | | +| test.swift:58:10:58:21 | MemberAccessExpr [0] | test.swift:58:10:58:23 | MemberAccessExpr | provenance | | +| test.swift:64:5:64:16 | TupleExpr [0] | test.swift:64:6:64:12 | MemberAccessExpr | provenance | | +| test.swift:64:6:64:10 | [post] tuple [1] | test.swift:66:10:66:14 | tuple [1] | provenance | | +| test.swift:64:6:64:12 | MemberAccessExpr | test.swift:64:6:64:10 | [post] tuple [1] | provenance | | +| test.swift:64:20:64:51 | TupleExpr [0] | test.swift:64:5:64:16 | TupleExpr [0] | provenance | | +| test.swift:64:21:64:35 | CallExpr | test.swift:64:20:64:51 | TupleExpr [0] | provenance | | +| test.swift:66:10:66:14 | tuple [1] | test.swift:66:10:66:16 | MemberAccessExpr | provenance | | +| test.swift:74:5:74:9 | [post] tuple [0] | test.swift:75:10:75:14 | tuple [0] | provenance | | +| test.swift:74:5:74:11 | MemberAccessExpr | test.swift:74:5:74:9 | [post] tuple [0] | provenance | | +| test.swift:74:15:74:29 | CallExpr | test.swift:74:5:74:11 | MemberAccessExpr | provenance | | +| test.swift:75:10:75:14 | tuple [0] | test.swift:75:10:75:16 | MemberAccessExpr | provenance | | +| test.swift:86:9:86:9 | x | test.swift:90:10:90:10 | x | provenance | | +| test.swift:86:9:86:9 | x | test.swift:99:14:99:14 | x | provenance | | +| test.swift:86:13:86:27 | CallExpr | test.swift:86:9:86:9 | x | provenance | | +| test.swift:94:9:94:9 | y | test.swift:96:10:96:10 | y | provenance | | +| test.swift:94:9:94:9 | y | test.swift:100:14:100:14 | y | provenance | | +| test.swift:94:13:94:27 | CallExpr | test.swift:94:9:94:9 | y | provenance | | +| test.swift:107:9:107:13 | [post] tuple [0] | test.swift:112:10:112:14 | tuple [0] | provenance | | +| test.swift:107:9:107:15 | MemberAccessExpr | test.swift:107:9:107:13 | [post] tuple [0] | provenance | | +| test.swift:107:19:107:33 | CallExpr | test.swift:107:9:107:15 | MemberAccessExpr | provenance | | +| test.swift:112:10:112:14 | tuple [0] | test.swift:112:10:112:16 | MemberAccessExpr | provenance | | +| test.swift:117:9:117:13 | tuple [0] | test.swift:120:17:120:21 | tuple [0] | provenance | | +| test.swift:117:9:117:13 | tuple [1] | test.swift:120:17:120:21 | tuple [1] | provenance | | +| test.swift:117:17:117:50 | TupleExpr [0] | test.swift:117:9:117:13 | tuple [0] | provenance | | +| test.swift:117:17:117:50 | TupleExpr [1] | test.swift:117:9:117:13 | tuple [1] | provenance | | +| test.swift:117:18:117:33 | CallExpr | test.swift:117:17:117:50 | TupleExpr [0] | provenance | | +| test.swift:117:35:117:49 | CallExpr | test.swift:117:17:117:50 | TupleExpr [1] | provenance | | +| test.swift:120:9:120:13 | TupleExpr [0] | test.swift:120:10:120:10 | a | provenance | | +| test.swift:120:9:120:13 | TupleExpr [1] | test.swift:120:12:120:12 | b | provenance | | +| test.swift:120:10:120:10 | a | test.swift:125:10:125:10 | a | provenance | | +| test.swift:120:12:120:12 | b | test.swift:126:10:126:10 | b | provenance | | +| test.swift:120:17:120:21 | tuple [0] | test.swift:120:9:120:13 | TupleExpr [0] | provenance | | +| test.swift:120:17:120:21 | tuple [1] | test.swift:120:9:120:13 | TupleExpr [1] | provenance | | +| test.swift:131:5:131:5 | a | test.swift:131:14:131:14 | a | provenance | | +| test.swift:131:5:131:5 | a | test.swift:132:10:132:10 | a | provenance | | +| test.swift:131:19:131:33 | CallExpr | test.swift:131:5:131:5 | a | provenance | | +nodes +| implicit-self.swift:11:9:11:12 | [post] self [x] | semmle.label | [post] self [x] | +| implicit-self.swift:11:9:11:14 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:11:18:11:31 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:12:14:12:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:12:14:12:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:17:9:17:9 | x | semmle.label | x | +| implicit-self.swift:17:13:17:26 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:18:14:18:14 | x | semmle.label | x | +| implicit-self.swift:23:9:23:9 | x | semmle.label | x | +| implicit-self.swift:23:13:23:26 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:24:14:24:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:24:14:24:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:29:9:29:12 | [post] self [x] | semmle.label | [post] self [x] | +| implicit-self.swift:29:9:29:14 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:29:18:29:31 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:30:14:30:14 | x | semmle.label | x | +| implicit-self.swift:35:9:35:12 | [post] self [box, x] | semmle.label | [post] self [box, x] | +| implicit-self.swift:35:9:35:16 | [post] MemberAccessExpr [x] | semmle.label | [post] MemberAccessExpr [x] | +| implicit-self.swift:35:9:35:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:35:22:35:35 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:36:14:36:17 | self [box, x] | semmle.label | self [box, x] | +| implicit-self.swift:36:14:36:21 | MemberAccessExpr [x] | semmle.label | MemberAccessExpr [x] | +| implicit-self.swift:36:14:36:23 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:41:9:41:11 | [post] box [x] | semmle.label | [post] box [x] | +| implicit-self.swift:41:9:41:13 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:41:17:41:30 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:42:14:42:16 | box [x] | semmle.label | box [x] | +| implicit-self.swift:42:14:42:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:47:9:47:11 | [post] box [x] | semmle.label | [post] box [x] | +| implicit-self.swift:47:9:47:13 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:47:17:47:30 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:48:14:48:17 | self [box, x] | semmle.label | self [box, x] | +| implicit-self.swift:48:14:48:21 | MemberAccessExpr [x] | semmle.label | MemberAccessExpr [x] | +| implicit-self.swift:48:14:48:23 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:53:9:53:12 | [post] self [box, x] | semmle.label | [post] self [box, x] | +| implicit-self.swift:53:9:53:16 | [post] MemberAccessExpr [x] | semmle.label | [post] MemberAccessExpr [x] | +| implicit-self.swift:53:9:53:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:53:22:53:35 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:54:14:54:16 | box [x] | semmle.label | box [x] | +| implicit-self.swift:54:14:54:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:2:10:2:21 | CallExpr | semmle.label | CallExpr | +| test.swift:6:10:6:23 | CallExpr | semmle.label | CallExpr | +| test.swift:6:10:6:32 | BinaryExpr | semmle.label | BinaryExpr | +| test.swift:7:10:7:32 | BinaryExpr | semmle.label | BinaryExpr | +| test.swift:7:19:7:32 | CallExpr | semmle.label | CallExpr | +| test.swift:9:10:9:33 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | +| test.swift:9:13:9:26 | CallExpr | semmle.label | CallExpr | +| test.swift:10:10:10:33 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | +| test.swift:10:18:10:31 | CallExpr | semmle.label | CallExpr | +| test.swift:11:10:11:38 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | +| test.swift:11:18:11:31 | CallExpr | semmle.label | CallExpr | +| test.swift:16:10:16:33 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:16:10:16:35 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:16:11:16:25 | CallExpr | semmle.label | CallExpr | +| test.swift:19:10:19:33 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:19:10:19:35 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:19:19:19:32 | CallExpr | semmle.label | CallExpr | +| test.swift:23:9:23:9 | a | semmle.label | a | +| test.swift:23:13:23:26 | CallExpr | semmle.label | CallExpr | +| test.swift:24:10:24:10 | a | semmle.label | a | +| test.swift:28:9:28:14 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:28:10:28:10 | a | semmle.label | a | +| test.swift:28:18:28:41 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:28:19:28:33 | CallExpr | semmle.label | CallExpr | +| test.swift:29:10:29:10 | a | semmle.label | a | +| test.swift:32:9:32:14 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:32:13:32:13 | d | semmle.label | d | +| test.swift:32:18:32:41 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:32:27:32:40 | CallExpr | semmle.label | CallExpr | +| test.swift:34:10:34:10 | d | semmle.label | d | +| test.swift:38:9:38:9 | a | semmle.label | a | +| test.swift:38:13:38:26 | CallExpr | semmle.label | CallExpr | +| test.swift:39:10:39:10 | a | semmle.label | a | +| test.swift:46:5:46:9 | [post] tuple [0] | semmle.label | [post] tuple [0] | +| test.swift:46:5:46:11 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:46:15:46:28 | CallExpr | semmle.label | CallExpr | +| test.swift:47:10:47:14 | tuple [0] | semmle.label | tuple [0] | +| test.swift:47:10:47:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:53:5:53:14 | [post] deep_tuple [1, 0] | semmle.label | [post] deep_tuple [1, 0] | +| test.swift:53:5:53:16 | [post] MemberAccessExpr [0] | semmle.label | [post] MemberAccessExpr [0] | +| test.swift:53:5:53:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:53:22:53:35 | CallExpr | semmle.label | CallExpr | +| test.swift:58:10:58:19 | deep_tuple [1, 0] | semmle.label | deep_tuple [1, 0] | +| test.swift:58:10:58:21 | MemberAccessExpr [0] | semmle.label | MemberAccessExpr [0] | +| test.swift:58:10:58:23 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:64:5:64:16 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:64:6:64:10 | [post] tuple [1] | semmle.label | [post] tuple [1] | +| test.swift:64:6:64:12 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:64:20:64:51 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:64:21:64:35 | CallExpr | semmle.label | CallExpr | +| test.swift:66:10:66:14 | tuple [1] | semmle.label | tuple [1] | +| test.swift:66:10:66:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:74:5:74:9 | [post] tuple [0] | semmle.label | [post] tuple [0] | +| test.swift:74:5:74:11 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:74:15:74:29 | CallExpr | semmle.label | CallExpr | +| test.swift:75:10:75:14 | tuple [0] | semmle.label | tuple [0] | +| test.swift:75:10:75:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:86:9:86:9 | x | semmle.label | x | +| test.swift:86:13:86:27 | CallExpr | semmle.label | CallExpr | +| test.swift:90:10:90:10 | x | semmle.label | x | +| test.swift:94:9:94:9 | y | semmle.label | y | +| test.swift:94:13:94:27 | CallExpr | semmle.label | CallExpr | +| test.swift:96:10:96:10 | y | semmle.label | y | +| test.swift:99:14:99:14 | x | semmle.label | x | +| test.swift:100:14:100:14 | y | semmle.label | y | +| test.swift:107:9:107:13 | [post] tuple [0] | semmle.label | [post] tuple [0] | +| test.swift:107:9:107:15 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:107:19:107:33 | CallExpr | semmle.label | CallExpr | +| test.swift:112:10:112:14 | tuple [0] | semmle.label | tuple [0] | +| test.swift:112:10:112:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:117:9:117:13 | tuple [0] | semmle.label | tuple [0] | +| test.swift:117:9:117:13 | tuple [1] | semmle.label | tuple [1] | +| test.swift:117:17:117:50 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:117:17:117:50 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:117:18:117:33 | CallExpr | semmle.label | CallExpr | +| test.swift:117:35:117:49 | CallExpr | semmle.label | CallExpr | +| test.swift:120:9:120:13 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:120:9:120:13 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:120:10:120:10 | a | semmle.label | a | +| test.swift:120:12:120:12 | b | semmle.label | b | +| test.swift:120:17:120:21 | tuple [0] | semmle.label | tuple [0] | +| test.swift:120:17:120:21 | tuple [1] | semmle.label | tuple [1] | +| test.swift:125:10:125:10 | a | semmle.label | a | +| test.swift:126:10:126:10 | b | semmle.label | b | +| test.swift:131:5:131:5 | a | semmle.label | a | +| test.swift:131:14:131:14 | a | semmle.label | a | +| test.swift:131:19:131:33 | CallExpr | semmle.label | CallExpr | +| test.swift:132:10:132:10 | a | semmle.label | a | +subpaths +testFailures +#select +| implicit-self.swift:12:14:12:19 | MemberAccessExpr | implicit-self.swift:11:18:11:31 | CallExpr | implicit-self.swift:12:14:12:19 | MemberAccessExpr | $@ | implicit-self.swift:11:18:11:31 | CallExpr | CallExpr | +| implicit-self.swift:18:14:18:14 | x | implicit-self.swift:17:13:17:26 | CallExpr | implicit-self.swift:18:14:18:14 | x | $@ | implicit-self.swift:17:13:17:26 | CallExpr | CallExpr | +| implicit-self.swift:24:14:24:19 | MemberAccessExpr | implicit-self.swift:23:13:23:26 | CallExpr | implicit-self.swift:24:14:24:19 | MemberAccessExpr | $@ | implicit-self.swift:23:13:23:26 | CallExpr | CallExpr | +| implicit-self.swift:30:14:30:14 | x | implicit-self.swift:29:18:29:31 | CallExpr | implicit-self.swift:30:14:30:14 | x | $@ | implicit-self.swift:29:18:29:31 | CallExpr | CallExpr | +| implicit-self.swift:36:14:36:23 | MemberAccessExpr | implicit-self.swift:35:22:35:35 | CallExpr | implicit-self.swift:36:14:36:23 | MemberAccessExpr | $@ | implicit-self.swift:35:22:35:35 | CallExpr | CallExpr | +| implicit-self.swift:42:14:42:18 | MemberAccessExpr | implicit-self.swift:41:17:41:30 | CallExpr | implicit-self.swift:42:14:42:18 | MemberAccessExpr | $@ | implicit-self.swift:41:17:41:30 | CallExpr | CallExpr | +| implicit-self.swift:48:14:48:23 | MemberAccessExpr | implicit-self.swift:47:17:47:30 | CallExpr | implicit-self.swift:48:14:48:23 | MemberAccessExpr | $@ | implicit-self.swift:47:17:47:30 | CallExpr | CallExpr | +| implicit-self.swift:54:14:54:18 | MemberAccessExpr | implicit-self.swift:53:22:53:35 | CallExpr | implicit-self.swift:54:14:54:18 | MemberAccessExpr | $@ | implicit-self.swift:53:22:53:35 | CallExpr | CallExpr | +| test.swift:2:10:2:21 | CallExpr | test.swift:2:10:2:21 | CallExpr | test.swift:2:10:2:21 | CallExpr | $@ | test.swift:2:10:2:21 | CallExpr | CallExpr | +| test.swift:6:10:6:32 | BinaryExpr | test.swift:6:10:6:23 | CallExpr | test.swift:6:10:6:32 | BinaryExpr | $@ | test.swift:6:10:6:23 | CallExpr | CallExpr | +| test.swift:7:10:7:32 | BinaryExpr | test.swift:7:19:7:32 | CallExpr | test.swift:7:10:7:32 | BinaryExpr | $@ | test.swift:7:19:7:32 | CallExpr | CallExpr | +| test.swift:9:10:9:33 | StringInterpolationExpr | test.swift:9:13:9:26 | CallExpr | test.swift:9:10:9:33 | StringInterpolationExpr | $@ | test.swift:9:13:9:26 | CallExpr | CallExpr | +| test.swift:10:10:10:33 | StringInterpolationExpr | test.swift:10:18:10:31 | CallExpr | test.swift:10:10:10:33 | StringInterpolationExpr | $@ | test.swift:10:18:10:31 | CallExpr | CallExpr | +| test.swift:11:10:11:38 | StringInterpolationExpr | test.swift:11:18:11:31 | CallExpr | test.swift:11:10:11:38 | StringInterpolationExpr | $@ | test.swift:11:18:11:31 | CallExpr | CallExpr | +| test.swift:16:10:16:35 | MemberAccessExpr | test.swift:16:11:16:25 | CallExpr | test.swift:16:10:16:35 | MemberAccessExpr | $@ | test.swift:16:11:16:25 | CallExpr | CallExpr | +| test.swift:19:10:19:35 | MemberAccessExpr | test.swift:19:19:19:32 | CallExpr | test.swift:19:10:19:35 | MemberAccessExpr | $@ | test.swift:19:19:19:32 | CallExpr | CallExpr | +| test.swift:24:10:24:10 | a | test.swift:23:13:23:26 | CallExpr | test.swift:24:10:24:10 | a | $@ | test.swift:23:13:23:26 | CallExpr | CallExpr | +| test.swift:29:10:29:10 | a | test.swift:28:19:28:33 | CallExpr | test.swift:29:10:29:10 | a | $@ | test.swift:28:19:28:33 | CallExpr | CallExpr | +| test.swift:34:10:34:10 | d | test.swift:32:27:32:40 | CallExpr | test.swift:34:10:34:10 | d | $@ | test.swift:32:27:32:40 | CallExpr | CallExpr | +| test.swift:39:10:39:10 | a | test.swift:38:13:38:26 | CallExpr | test.swift:39:10:39:10 | a | $@ | test.swift:38:13:38:26 | CallExpr | CallExpr | +| test.swift:47:10:47:16 | MemberAccessExpr | test.swift:46:15:46:28 | CallExpr | test.swift:47:10:47:16 | MemberAccessExpr | $@ | test.swift:46:15:46:28 | CallExpr | CallExpr | +| test.swift:58:10:58:23 | MemberAccessExpr | test.swift:53:22:53:35 | CallExpr | test.swift:58:10:58:23 | MemberAccessExpr | $@ | test.swift:53:22:53:35 | CallExpr | CallExpr | +| test.swift:66:10:66:16 | MemberAccessExpr | test.swift:64:21:64:35 | CallExpr | test.swift:66:10:66:16 | MemberAccessExpr | $@ | test.swift:64:21:64:35 | CallExpr | CallExpr | +| test.swift:75:10:75:16 | MemberAccessExpr | test.swift:74:15:74:29 | CallExpr | test.swift:75:10:75:16 | MemberAccessExpr | $@ | test.swift:74:15:74:29 | CallExpr | CallExpr | +| test.swift:90:10:90:10 | x | test.swift:86:13:86:27 | CallExpr | test.swift:90:10:90:10 | x | $@ | test.swift:86:13:86:27 | CallExpr | CallExpr | +| test.swift:96:10:96:10 | y | test.swift:94:13:94:27 | CallExpr | test.swift:96:10:96:10 | y | $@ | test.swift:94:13:94:27 | CallExpr | CallExpr | +| test.swift:99:14:99:14 | x | test.swift:86:13:86:27 | CallExpr | test.swift:99:14:99:14 | x | $@ | test.swift:86:13:86:27 | CallExpr | CallExpr | +| test.swift:100:14:100:14 | y | test.swift:94:13:94:27 | CallExpr | test.swift:100:14:100:14 | y | $@ | test.swift:94:13:94:27 | CallExpr | CallExpr | +| test.swift:112:10:112:16 | MemberAccessExpr | test.swift:107:19:107:33 | CallExpr | test.swift:112:10:112:16 | MemberAccessExpr | $@ | test.swift:107:19:107:33 | CallExpr | CallExpr | +| test.swift:125:10:125:10 | a | test.swift:117:18:117:33 | CallExpr | test.swift:125:10:125:10 | a | $@ | test.swift:117:18:117:33 | CallExpr | CallExpr | +| test.swift:126:10:126:10 | b | test.swift:117:35:117:49 | CallExpr | test.swift:126:10:126:10 | b | $@ | test.swift:117:35:117:49 | CallExpr | CallExpr | +| test.swift:131:14:131:14 | a | test.swift:131:19:131:33 | CallExpr | test.swift:131:14:131:14 | a | $@ | test.swift:131:19:131:33 | CallExpr | CallExpr | +| test.swift:132:10:132:10 | a | test.swift:131:19:131:33 | CallExpr | test.swift:132:10:132:10 | a | $@ | test.swift:131:19:131:33 | CallExpr | CallExpr | 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..132afed56490 --- /dev/null +++ b/unified/ql/test/library-tests/dataflow/test.swift @@ -0,0 +1,145 @@ +func t1() { + sink(source("t1")); // $ hasValueFlow=t1 +} + +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() { + var 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"); // $ SPURIOUS: hasTaintFlow=t14.1 + sink(a); // $ hasTaintFlow=t14.1 +} + +func t15() { + var a = "safe"; + a += source("t15.1"); + sink(a); // $ MISSING: hasTaintFlow=t15.1 +} + +func t16() { + var a = "safe"; + a += sink(a) + source("t16.1"); + sink(a); // $ MISSING: hasTaintFlow=t16.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/local-name-binding/CONSISTENCY/CfgConsistency.expected b/unified/ql/test/library-tests/local-name-binding/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 000000000000..f125f6b6d4f7 --- /dev/null +++ b/unified/ql/test/library-tests/local-name-binding/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,5 @@ +consistencyOverview +| deadEnd | 2 | +deadEnd +| test.swift:341:10:341:15 | Entry | +| test.swift:342:10:342:15 | Entry | 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..795d7b8bac7a --- /dev/null +++ b/unified/ql/test/library-tests/local-name-binding/self_access.swift @@ -0,0 +1,33 @@ +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 // 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 // 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 + } + } +} 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..02558d808d4e 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 } @@ -181,7 +181,7 @@ func t21() { // Nested functions func t22() { let x = 1 // name=x1 - func inner() { // name=inner1 + func inner() { // $ captured=inner1 // name=inner1 let x = 2 // name=x2 print(x) // $ access=x2 } @@ -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/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..42bf26038f17 --- /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 { // 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 { // 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/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..c39202fe5a41 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 | + exists(NameBinding decl, Identifier access | decl = getStaticBindingTarget(access) and - not access instanceof NameDeclaration 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..a7432344eb48 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,5 @@ 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 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/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..f209780f3eee 100644 --- a/unified/swift-syntax-rs/src/lib.rs +++ b/unified/swift-syntax-rs/src/lib.rs @@ -86,12 +86,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] @@ -138,11 +144,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..7f6af5898191 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,50 @@ 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 func serialize(_ node: Syntax) -> Any { if node.kind.isSyntaxCollection { return node.children(viewMode: .sourceAccurate).map { - serialize($0, converter) + serialize($0) } } - // 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 +123,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 +133,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] = serialize(child) } else { // Defensive fallback for any unnamed layout child. - result["child\(unnamed)"] = serialize(child, converter) + result["child\(unnamed)"] = serialize(child) unnamed += 1 } } @@ -315,7 +307,10 @@ public func ssr_parse_json(_ source: UnsafePointer?) -> UnsafeMutablePoin // 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) + guard var json = serialize(folded) as? [String: Any] else { + return nil + } + json["$lineStarts"] = lineStarts(converter) var bytes: [UInt8] = [] do {